2011-02-26 85 views
0

在MySQL中使用全文搜索,我想有确切的词组:mysql的全文检索精确短语问题

"romantic dinner" to be found. 

但我也希望每个的话可以像同义词:

“浪漫晚餐”为例子来发现(我们的语言都有,每一个字都有8个结局像大问题)......

我想:

+"romantic (dinner dinners)" and 
"romantic +(dinner dinners)" 

但似乎没有得到结果...是否有可能在精确搜索中进行一些逻辑或操作?

更新:使它成为一个转折问题:有没有办法在全文搜索中将某些逻辑运算符置于完全匹配(“”)中?

回答

0

它只会部分地解决您的问题,但在mysql中有一个soundex()函数,它将给定的字符串转换为soundex表示形式。类似的字符串应该有相同的soundex表示,所以它可能是一个开始。

希望这会有所帮助。

+0

Thanx的提示,但我不使用英语,所以这对我来说没用。我也通过我的网站进行搜索engline,所以我使用布尔全文搜索。 – Jerry2 2011-02-26 14:41:16

0
SELECT field_name FROM table_name WHERE MATCH(field_name) AGAINST('romantic* dinner*' IN BOOLEAN MODE)... 

绝对可以用+和 - 来进一步优化搜索结果 参考:http://dev.mysql.com/doc/refman/5.0/en/fulltext-boolean.html

+0

是的,但这不是全文搜索...并且问题在我的语言浪漫也用户喜欢8不同的endigns,所以我不得不使用8 * 8 = 64喜欢找到所有:-( – Jerry2 2011-02-26 14:58:53

+0

哦!答案是纠正..:P – Yan 2011-02-26 18:18:05

+0

这也会发现“晚餐浪漫”,对我们来说问题是,我们不使用像复数,但一个不同的词晚餐:-( – Jerry2 2011-02-26 19:00:32

0

如果“‘罗马* DINN *’并不为你工作,它可能是时间寻找到的东西像Solr:http://lucene.apache.org/solr/这将允许更复杂的搜索,并可能已经为您的语言提供了词干。

+0

罗马* dinn *是不好,因为我不知道在哪里打破这个词...我使用IIS7.0,因此Solr无法工作 – Jerry2 2011-02-26 18:11:30

+0

Lucene在[link](http://incubator.apache.org/lucene.net/)和Lucene/Solr拥有大量的语言处理代码,索引和查询管道中还有一些地方可以插入自己的代码。 – 2011-03-01 03:09:46