Sphinx和词形变化

3

我可以如何让Sphinx将"auto"和"car"识别为相似的单词?

假设我有三个数据库记录:

Andy likes to drive auto.
Mary don't like to drive car.
Bob is going to buy automobile.

这里是示例查询及其结果...

query: car
result: Mary don't like to drive car.
-------------------------------------
query: auto
result: Andy likes to drive auto.
-------------------------------------
query: automobile
Bob is going to buy automobile.

但我希望Sphinx返回...

query: car
result:
Andy likes to drive auto.
Mary don't like to drive car.
Bob is going to buy automobile.
-------------------------------------
query: auto
result:
Andy likes to drive auto.
Mary don't like to drive car.
Bob is going to buy automobile.
-------------------------------------
query: automobile
result:
Andy likes to drive auto.
Mary don't like to drive car.
Bob is going to buy automobile.

我知道Sphinx有停用词,但我应该把什么放进停用词词典中让Sphinx以这种方式思考呢?
谢谢。

小观察...我认为你的意思是在“car”查询下将“Mary don't like to drive car.”放在第一个结果。 - ServAce85
2个回答

4

是的,我已经查过单词形式的手册了。但我不明白应该怎么做才能让这些单词相等。我应该把汽车>自动车,汽车>汽车,自动车>汽车,自动车>汽车,汽车>汽车,汽车>自动车吗?还是有更简单的方法?谢谢。 - Kirzilla
1
在我示例代码中展示的那样,你想要使用 car 作为每个其他单词的表单,以便它们都等同于 sphinx。请记住,词形还没有进行词干处理,因此复数等需要明确指定。语法是[考虑这个词]> [作为这个词]。 - Ty W
我在http://sphinxsearch.com/forum/view.html?id=5134 上问了同样的问题,你同时回答了。 :) - Kirzilla

0

让我用“齿轮”和“杠杆”这两个词作为词形变化的例子,因为这两个词在金融领域中是相等的术语,应该被视为同义词(两个词的意思都是“财务杠杆”)。

最初你的“wordforms.txt”文件应该像这样列出它们:

gear > gear
geared > gear
gearing > gear
gears > gear
……
leverage > leverage
leveraged > leverage
leverages > leverage
leveraging > leverage

这意味着最初这两个单词并没有联系。为了解决这个问题,您应该按照以下方式修改“wordforms.txt”文件的内容:

gear > leverage
geared > leverage
gearing > leverage
gears > leverage
……
leveraged > leverage
leverages > leverage
leveraging > leverage

这个编辑将它们(和它们的所有形式)连接起来。在您编辑“wordforms.txt”文件后,必须保存并重新索引您的索引以应用更改。

现在,当您搜索“gearing”或“leverage”时,您的结果将包含这两个词及其所有形态。


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