alist
alist copied to clipboard
使用布尔检索以解决MySql的搜索问题
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;
被切片的内容可以使用完整的文字搜索
但无法被非完整的文字搜索
SELECT * FROM x_search_nodes WHERE MATCH ( NAME ) against ( '速度与激' IN NATURAL LANGUAGE MODE) LIMIT 100;
当使用布尔模式检索时 例如:
SELECT * FROM x_search_nodes WHERE MATCH ( NAME ) against ( '*速度与激*' IN BOOLEAN MODE) LIMIT 100;
SELECT * FROM x_search_nodes WHERE MATCH ( NAME ) against ( '*哆啦A梦*' IN BOOLEAN MODE) LIMIT 100;
Suggested solution / 实现思路
可修改/internal/db/searchnode.go
路径下,查询语句的关键词左右加上通配符*
,并修改为方式为BOOLEAN MODE
Additional context / 附件
No response