使用Djangohaystack+Elasticsearch如何搜索单词的子集?

2024-10-03 00:28:18 发布

您现在位置:Python中文网/ 问答频道 /正文

如果我输入查询“apple”,我希望得到类似“xyzapplexyz”、“apple”、“applexyz”和的结果,而不是类似“app”或“appl”。但我得到的是“applexyz”,“app”等等

我使用了EdgeNgram字段,并尝试使用以下查询:

1-->;>;SearchQuerySet().all().autocomplete(authors=query)

2-->;SearchQuerySet().all().filter(authors=query)

3——>;SearchQuerySet().all().filter(content=query)

4-->;SearchQuerySet().all().autocomplete(content=query)

但它们都没有给出所需的结果。如何解决此问题?你知道吗


Tags: gtappapplecontentallfilterqueryautocomplete
1条回答
网友
1楼 · 发布于 2024-10-03 00:28:18

如果您想要像"xyzapplexyz"这样的结果,那么您需要使用ngram analyzer而不是EdgeNGram,或者您可以根据您的需求同时使用这两种方法。EdgeNGram只从一开始生成令牌。你知道吗

使用NGramapple将是termxyzapplexyz的生成标记之一,假设max_gram >=5,您将得到预期的结果,而且search_analyzer需要不同,否则您将得到奇怪的结果。你知道吗

如果你有大量的文本,index size可能会因为ngram而变得很大

相关问题 更多 >