我试图了解模糊搜索在AWS CloudSearch上的工作原理
我想找到"星球大战"但在我的搜索中,我拼写了
ster wers
我的应用程序的逻辑将增加模糊,但它永远不会返回星球大战。 我试过了:
ster~1 wers~1
"ster wers"~2
"ster"~1 "wers"~1
我在这里缺少什么?
答案 0 :(得分:12)
您的查询无法正常工作的原因是CloudSearch的结果。如果您的字段已将Analysis Scheme设置为English
,则wars
将以war
的形式存储。
这是一个关于词干分析如何影响查询的小演示。
使用未查询的查询进行搜索(' ster wers'):
使用非限制性查询进行搜索时,您需要将wers
与war
相匹配,该标记已关闭2个字符,并且需要此查询:q=ster~1+wers~2
。
使用词干查询进行搜索(' ster wer'):
使用词干版本进行搜索意味着您将wer
与war
匹配,并且您只能使用1个字符。因此ster~1 wer~1
将获得所需的结果(即它匹配star wars
)。
如何解决:
如果您将相关字段的Analysis Scheme配置为不使用任何词干,则您描述的用例将起作用。
要执行此操作,请登录AWS Web Console并转至Analysis Schemes - >添加分析方案:
然后转到索引选项并配置您的字段以使用新的非阻塞分析方案:
提交您的更改并重新编制索引。
这将解决您的问题,但当然您将失去阻止的好处。你也不能吃蛋糕,也不能吃。