如果我输入查询“apple”,我希望获得“xyzapplexyz”,“apple”,“applexyz”和 NOT 之类的结果,例如“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)
但他们都没有给出所需的结果。我该如何解决这个问题?
答案 0 :(得分:0)
如果您需要"xyzapplexyz"
之类的结果,那么您需要使用ngram analyzer代替EdgeNGram
,或者根据您的要求使用两者。 EdgeNGram
仅从头开始生成令牌。
NGram
apple 的将成为术语 xyzapplexyz 的生成标记之一,假设为max_gram >=5
,您将获得预期结果,同时{{ 1}}需要不同,否则你会得到奇怪的结果。
如果您有大量文本,search_analyzer
index size
可能会变得非常大