首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Mysql全文搜索忽略重复单词立即取词

Mysql全文搜索忽略重复单词立即取词
EN

Stack Overflow用户
提问于 2011-09-14 09:40:32
回答 4查看 804关注 0票数 0

我需要帮助,在mysql全文搜索。我在找一本名为“梦想”的书。当我寻找梦想的时候

  1. 印度是我梦中最伟大的梦想
  2. 梦词典-理解梦
  3. 梦中的心灵&超越梦想
  4. 无梦
  5. 只有梦
  6. 梦想
  7. 其他一些书

其实我是在寻找梦想,如何做第六本书到第一本。

我想忽略重复的单词,在这种情况下,梦想

你可以搜索这里

我正以不同的标题面对这类问题。

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2011-09-14 10:24:48

列与重复的搜索单词的相关性是最重要的,我看到的唯一解决方案是使用标准全文搜索执行一个联合查询,以查找与之完全匹配的内容,例如:

代码语言:javascript
复制
SELECT * FROM books 
WHERE title = 'Dreams'
UNION
SELECT * FROM books
WHERE MATCH(title) AGAINST("Dreams")

这将首先显示准确的匹配。

或者你可以

代码语言:javascript
复制
SELECT * FROM books
WHERE MATCH(title) AGAINST("Dreams")
ORDER BY (CASE WHEN title = 'Dreams' THEN 1 ELSE 0 END),.....
票数 0
EN

Stack Overflow用户

发布于 2011-09-14 11:53:30

你想把确切的情况作为第一个建议吗?

按顺序尝试:

代码语言:javascript
复制
"ORDER BY ('{$str_search}' = title) DESC"

这将使您搜索的确切案例搜索词首先出现。

2更多的解决办法:

代码语言:javascript
复制
"ORDER BY ('{$str_search}' LIKE title) DESC"
"ORDER BY ('{$str_search}%' LIKE title) DESC"

第三种解决方案可以用来整理你的搜索词开始的所有内容。

注意:这个解决方案与当一个解决方案时的情况大致相同。

票数 0
EN

Stack Overflow用户

发布于 2015-09-17 23:33:30

也许已经不相关了,但是如果有人来找我,我会再次推荐在上面使用levenshtein函数来解决这个问题。有关更多信息和mysql中的完整实现,请参见下文。

https://dba.stackexchange.com/questions/40450/mysql-full-text-search-increase-relevance-for-exact-matches

Levenshtein: MySQL + PHP

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/7414229

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档