搜索项=['网站上的 ISBN 号']
变量(列):MySQL表中的句子。它由许多不同的句子组成。
我想找的句子是
“自动链接功能随 Google 最新的工具栏一起提供,如果在 Amazon.com 网站上找到一本书的 ISBN 编号,它会在网页中提供指向 Amazon.com 的链接。”
但是,当我使用以下语句时:
SELECT * FROM testtable
where Sentence like "%ISBN number on site%" ;
我无法得到结果。这是因为搜索词(“ISBN number on site”)与句子相比缺少一个单词(“the”)。
如何改变我的陈述以获得我想要的句子?谢谢。
假设我们不更改搜索词=['ISBN number on site']
这不是一个简单的问题。你最好的选择是使用某种类型的全文检索。全文搜索可以配置为包含停用词(搜索中省略的单词 - 例如单词the
)并且也可以有最小字长限制(小于特定字符长度的单词也会从搜索中省略。
但是,如果您只是使用
SELECT * FROM testtable
WHERE MATCH (sentence)
AGAINST ('ISBN number on site');
然后MySQL不仅会返回包含您要查找的值的记录,还会返回仅包含某些单词且顺序不同的记录。您展示的可能是排名最高的之一,但不能保证它会是排名最高的。
您可能想使用布尔全文搜索并前置+
对每个搜索词强制 MySQL 仅返回包含所有搜索词的记录:
SELECT * FROM testtable
WHERE MATCH (sentence)
AGAINST ('+ISBN +number +on +site' IN BOOLEAN MODE);
But, on
应该是一个停用词(它位于默认的 stipword 列表中)或者应该比最小单词长度短,因此应该从搜索表达式中省略(您将不会得到任何结果):
SELECT * FROM testtable
WHERE MATCH (sentence)
AGAINST ('+ISBN +number +site' IN BOOLEAN MODE);
我知道这需要更改搜索表达式,但是这将使用 MySQL 的内置功能为您带来最佳结果。
另一种方法是使用其他全文搜索引擎,例如sphinx为您执行搜索。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)