alist icon indicating copy to clipboard operation
alist copied to clipboard

使用布尔检索以解决MySql的搜索问题

Open AkashiCoin opened this issue 2 years ago • 0 comments

Please make sure of the following things

  • [X] I have read the documentation.
  • [X] I'm sure there are no duplicate issues or discussions.
  • [X] I'm sure this feature is not implemented.
  • [X] I'm sure it's a reasonable and popular requirement.

Description of the feature / 需求描述

对于issue #2844 使用MySql数据库无法搜索的问题,经过测试发现,可以使用mysql布尔模式加上通配符*来得到较为精确的结果。

在自然语言模式中,搜素无法搜到没有切片的中文内容 例如:

SELECT * FROM	x_search_nodes WHERE	MATCH ( NAME ) against ( '速度与激情' IN NATURAL LANGUAGE MODE) LIMIT 100;

被切片的内容可以使用完整的文字搜索 image 但无法被非完整的文字搜索

SELECT * FROM	x_search_nodes WHERE	MATCH ( NAME ) against ( '速度与激' IN NATURAL LANGUAGE MODE) LIMIT 100;

image

当使用布尔模式检索时 例如:

SELECT * FROM	x_search_nodes WHERE	MATCH ( NAME ) against ( '*速度与激*' IN BOOLEAN MODE) LIMIT 100;

image

SELECT * FROM	x_search_nodes WHERE	MATCH ( NAME ) against ( '*哆啦A梦*' IN BOOLEAN MODE) LIMIT 100;

image

Suggested solution / 实现思路

可修改/internal/db/searchnode.go路径下,查询语句的关键词左右加上通配符*,并修改为方式为BOOLEAN MODE

Additional context / 附件

No response

AkashiCoin avatar Jan 04 '23 16:01 AkashiCoin