这个字符串被编入索引:“Lorem ipsum dolor sit amet,consectetur adipisicing elit,sed do eiusmod tempor incididunt ut labore et dolore magna aliqua。”
我的疑问是:“ Hello world。 Lorem ipsum dolor sit amet,consectetur adipisicing elit,sed do eiusmod tempor incididunt ut labore et dolore magna aliqua。其他文字。 “
当我运行查询时,我没有得到任何结果。如果我的查询中有一些“垃圾”文本,我怎样才能得到结果?
我正在使用Django,Haystack和ElasticSearch。
答案 0 :(得分:3)
如果您使用默认运算符“或”的“匹配”查询,那么您将获得任何单词匹配的匹配,但匹配单词匹配的 lot 的排名将排名以上命中少数的单词匹配。
http://www.elasticsearch.org/guide/reference/query-dsl/match-query.html
但如果你的意思是你只想匹配那个确切的短语,但在两端都允许一些额外的文字,我不确定你能做到这一点。
如果您可以放宽对完全短语匹配的要求,可以选择使用木瓦标记过滤器来分析文档(和查询)。
http://www.elasticsearch.org/guide/reference/index-modules/analysis/shingle-tokenfilter.html
然后使用“或”运算符的匹配查询将对单词的对,三元组,四元组等进行操作(取决于过滤器配置)。将shingle大小设置为2或3会使包含许多与查询相同的单词的文档(偶然)得分很高。
或者您可以使用带有slop的短语查询(请参阅上面匹配查询页面的底部)。
这两种方法都允许插入以及前缀/后缀。
答案 1 :(得分:0)
Elasticsearch具有非常强大的More Like This Query,允许您根据文本片段生成查询。