[英]Solr search does not return exact match
我正在使用Solr 6來實現搜索引擎。 我面臨的問題是,當我搜索該單詞時,它會首先返回其他一些結果,而實際查詢的數字是6。
例如,我正在搜索Cafe 9
這回我...
我想要的是它在第9位顯示Cafe 9 ,然后在第9位顯示其他結果是完全匹配。
我已經用text_general類型索引了所有字段,並附加了schema.xml。
提前致謝。
<fieldType name="text_general" class="solr.TextField" positionIncrementGap="100"> <analyzer type="index"> <tokenizer class="solr.StandardTokenizerFactory"/> <filter class="solr.StopFilterFactory" ignoreCase="true" words="stopwords.txt" /> <!-- in this example, we will only use synonyms at query time <filter class="solr.SynonymFilterFactory" synonyms="index_synonyms.txt" ignoreCase="true" expand="false"/> --> <filter class="solr.ApostropheFilterFactory"/> <filter class="solr.ShingleFilterFactory" maxShingleSize="5" outputUnigrams="true"/> <filter class="solr.LowerCaseFilterFactory"/> </analyzer> <analyzer type="query"> <tokenizer class="solr.StandardTokenizerFactory"/> <filter class="solr.StopFilterFactory" ignoreCase="true" words="stopwords.txt" /> <filter class="solr.SynonymFilterFactory" synonyms="synonyms.txt" ignoreCase="true" expand="true"/> <filter class="solr.ApostropheFilterFactory"/> <!-- <filter class="solr.ShingleFilterFactory" maxShingleSize="5" outputUnigrams="true"/> --> <filter class="solr.LowerCaseFilterFactory"/> </analyzer> </fieldType>
如果要提高包含所有查詢詞的文檔的分數,則可以將pf
參數與字段名的值一起傳遞。 在您的情況下,您應該傳遞pf=name
( pf
表示短語字段)。 eDisMax查詢解析器將嘗試從q
參數中的所有術語中進行詞組查詢,如果能夠在任何詞組字段中找到確切的詞組,則它將指定的提升應用於該文檔的匹配項。
如果您默認情況下不使用eDisMax查詢解析器,則可以通過傳遞q={!edismax pf=name}cafe 9
暫時將其用於當前查詢。
您還可以傳遞pf2參數(如在pf2=name
),該參數的工作方式與pf
相似,只是所生成的短語查詢是查詢中的雙字母組 (即,每兩個連續的術語將被視為增強短語)。 如果恰好是您要尋找的,還有一個pf3參數。
您還可以自定義增強功能,並將多個字段名稱傳遞給短語接近性參數(例如pf=name^2 title^3
)。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.