假設如果我在solr中搜索關鍵字IPL,我想要包含IPL和#IPL的結果。如何實現這一目標?在Solr中搜索同時包含標籤
我試過下面的索引和查詢中的WordDelimFactory,但沒有運行出 。
我想我必須將字符串拆分爲「字符串」和「#字符串」,但不知道該怎麼做。
假設如果我在solr中搜索關鍵字IPL,我想要包含IPL和#IPL的結果。如何實現這一目標?在Solr中搜索同時包含標籤
我試過下面的索引和查詢中的WordDelimFactory,但沒有運行出 。
我想我必須將字符串拆分爲「字符串」和「#字符串」,但不知道該怎麼做。
,如果你想每keryword搜索作爲#keyword那麼你可以嘗試使用OR運算符查詢就像
/select?q="IPL" OR "#IPL"
如果你想在特定領域搜索,然後
/select?q=title:"IPL" OR title:"#IPL"
你可以試試與同義詞。但在這種情況下,它只是#前綴。
轉到您的solr實例的配置文件。在conf文件夾內編輯synonyms .txt文件。
IPL => #IPL
OR
改變您的查詢字段標記者在Schema.xml文件,
<fieldType name="text" class="solr.TextField" positionIncrementGap="100">
<analyzer type="query">
<tokenizer class="solr.WhitespaceTokenizerFactory"/>
<filter class="solr.StopFilterFactory" ignoreCase="true" words="stopwords.txt" />
<filter class="solr.SynonymFilterFactory" synonyms="synonyms.txt" ignoreCase="true" expand="true"/>
<filter class="solr.LowerCaseFilterFactory"/>
</analyzer>
</fieldType>
然後用字段名/select?q=text:#IPL
查詢,因爲在Solr的文本是默認你可以試試/select?q=#IPL
這是通過WordDelimiterFilterFactory
完成的。設置generateWordParts=1.
也保留preserveOriginal = 1。 這將保持原來的,並將創建新的沒有#。
修改schema.xml
之後,重新啓動服務器並重新索引數據。
<fieldType name="text" class="solr.TextField" positionIncrementGap="100">
<analyzer>
<tokenizer class="solr.WhitespaceTokenizerFactory"/>
<filter class="solr.StopFilterFactory"
ignoreCase="true"
words="stopwords.txt"
enablePositionIncrements="true"
/>
<filter class="solr.WordDelimiterFilterFactory"
protected="protwords.txt"
generateWordParts="1"
generateNumberParts="1"
catenateWords="1"
catenateNumbers="1"
catenateAll="0"
splitOnCaseChange="0"
preserveOriginal="1"/>
<filter class="solr.LengthFilterFactory" min="2" max="100" />
<filter class="solr.LowerCaseFilterFactory"/>
<filter class="solr.SnowballPorterFilterFactory" language="English" protected="protwords.txt"/>
<filter class="solr.RemoveDuplicatesTokenFilterFactory"/>
</analyzer>
</fieldType>
我想這樣做所有的搜索關鍵字不只是IPL。如何在synonyms義的.txt中以這種方式進行配置? – Babu
您的查詢字詞被標記。 solr.StandardTokenizerFactory將從您的關鍵字中刪除#。 – vinod
正在使用whitespacefactory \t \t <過濾器類= 「solr.StopFilterFactory」 IGNORECASE = 「真」 的話= 「stopWords.txt中」 enablePositionIncrements = 「真」/> < filter class =「solr.LowerCaseFilterFactory」/> \t \t \t \t –
Babu