林建設使用SOLR 5.2的應用程序,我需要這種類型的比賽:SOLR匹配短語(卵石FILTER)
,如果我有存儲字段名稱:」 BLA1 bla2‘和名稱:’bla2東西bla3「 當我查詢類似名稱的東西:」東西bla1 bla2東西bla3 bla4「 我需要它匹配兩個條款。
所以我落得這樣做是定義這種類型的字段:
我使用關鍵字標記生成器爲索引。
我用空白標記生成器和瓦濾波器查詢,所以我得到這樣的 「喇嘛TRA KLA ZLA CLA」 輸出 「BLA TRA」, 「喇嘛TRA科軍」, 「喇嘛TRA KLA ZLA」 .... ...
我已經嘗試過分析和shingling工作正常,但問題是當我執行我的查詢與真正的數據它似乎沒有找到匹配。
<fieldType name="shingleparse" class="solr.TextField" positionIncrementGap="100">
<analyzer type="index">
<tokenizer class="solr.KeywordTokenizerFactory"/>
</analyzer>
<analyzer type="query">
<tokenizer class="solr.WhitespaceTokenizerFactory"/>
<filter class="solr.ShingleFilterFactory" outputUnigrams="false" outputUnigramsIfNoShingles="true" minShingleSize="2" maxShingleSize="5"/>
</analyzer>
</fieldType>
<field name="name" type="shingleparse" indexed="true" stored="true" required="true" multiValued="false" />
[關鍵詞標記生成器(https://cwiki.apache.org/confluence/display/solr/Tokenizers#Tokenizers-KeywordTokenizer)將整個文本字段作爲一個單一令牌。因此,當您將數據編入索引時,可以看到像單個標記'bla2 something bla3'。 – alexf
這正是它應該如何處理,因爲例如,如果我查詢smth像「** bla2東西bla3 bla4 bla5 **」我會得到帶狀皰疹「** bla2東西**」,「** bla2東西bla3 * *「,...它應該匹配,但由於某種原因,它不會 – BrainOverflow
因此,在您的示例中,**第一個**('bla1 bla2')匹配,而不是**第二個**('bla2 something bla3')? – alexf