MySQL全文后缀搜索(布尔模式)- (*apple)

5
在布尔模式下,apple*会找到apple, apples, applestore,但不会找到我(虚构的单词)Mapple, Trapple。所以我尝试使用*apple,但那并不起作用。
全文搜索中是否不可能查找以apple结尾的单词?或者我在文档中漏了什么?
2个回答

12

虽然MySQL全文搜索不允许你按后缀进行搜索,但如果你可以接受一些存储开销,这个问题是有解决方法的。你只需要额外添加一个列用于保存原始列中反转的字符串值,并为新列添加一个额外的全文索引。然后你的查询将如下所示:

SELECT * FROM Tbl
WHERE MATCH (Word_reversed) AGAINST (REVERSE('*apple') IN BOOLEAN MODE)

记得你还需要通过更新/插入触发器或手动方式来维护额外的字段。


1

试一下

SELECT * From Table
WHERE Word like '%apple'

你是在告诉我全文搜索中没有这样的东西可用吗?刚刚测试了'%apple'不起作用,但使用'%apple%'目前可以得到一个还算可以的结果。不过还需要测试一些其他情况。 - Tessmore
我不确定全文中是否有这样的内容。 - PaShKa
1
@Tessmore:不,使用布尔全文搜索(或自然语言全文搜索)无法进行后缀搜索。正如在该运算符的文档中所述,* 运算符仅适用于前缀搜索。请参考此链接:http://dev.mysql.com/doc/refman/5.1/en/fulltext-boolean.html。 - Michael Madsen
好的,谢谢你指出这个问题。我认为这主要是因为它涉及荷兰语的问题:(。我需要一种将“tomatensoep”转换为“+tomaten +soep”的方法,这样它至少可以找到汤,甚至可能还有一些加了番茄的汤,但不幸的是,也许你知道我可以寻找的方向? - Tessmore
类似于工作,但与全文搜索相比较慢。 - anjaneyulubatta505

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接