簡體   English   中英

使用django-haystack + Elasticsearch如何搜索單詞的子集?

[英]Using django-haystack +Elasticsearch how can I search subsets of a word?

如果我輸入查詢“蘋果”我希望得到的結果,如“xyzapplexyz”,“蘋果”,“applexyz”,而不是像“應用”或“申請”。 但是我得到的是“ 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)

但是它們都沒有給出所需的結果。 我該如何解決這個問題?

如果您想要類似"xyzapplexyz"結果,則需要使用ngram分析器而不是EdgeNGram或者可以根據需要使用兩者。 EdgeNGram僅從一開始就生成令牌。

假設max_gram >=5 ,使用NGram 蘋果將是術語xyzapplexyz生成的令牌之一,您將獲得預期的結果,而且search_analyzer也需要不同,否則您將獲得怪異的結果。

另外,如果您有大量文本,則使用ngram index size可能會變得很大

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM