我正在使用solr 4.9.0實現solr搜索。Solr查詢只匹配如果查詢中存在所有標記
我想solr返回匹配所有我的查詢關鍵字不只是一個或幾個結果。
讓我放棄一個例子
<field name="id" type="string" indexed="true" stored="true" required="true"/>
<field name="title" type="text_general" indexed="true" stored="true" required="true"/>
<field name="at" type="string" indexed="true" stored="true" required="true"/>
<field name="rt" type="custom1" indexed="true" stored="true" required="true"/>
<field name="st" type="custom1" indexed="true" stored="true" required="true"/>
我對所有的這一個copyField(如果萬一事宜)
<copyField source="id" dest="text"/>
<copyField source="title" dest="text"/>
<copyField source="at" dest="text"/>
<copyField source="rt" dest="text"/>
<copyField source="st" dest="text"/>
和「CUSTOM1」 filedType前豎起模式,我已經定義如下:
<fieldType name="custom1" class="solr.TextField" positionIncrementGap="100">
<analyzer type="index">
<tokenizer class="solr.KeywordTokenizerFactory"/>
</analyzer>
<analyzer type="query">
<tokenizer class="solr.KeywordTokenizerFactory"/>
<filter class="solr.LowerCaseFilterFactory" />
</analyzer>
</fieldType>
fieldType可能沒有什麼意義,因爲我試圖很多,如果梳以獲得我想要的結果。
領域可以有以下值:
標題 - 可以包含在任何 - 客房女孩,公寓爲單打,聯合援助宿舍 RT - 1個共享,3共享,單座 日 - 1 BHK,3 BHK
現在,如果我查詢「1 BHK flat in roselum city」,我期望結果只用st作爲「1 BHK」和其他包含標題中關鍵字的結果。
但是我也得到了rt =「1 sharing」的結果,並且結果有st =「3 BHK」,因爲我的查詢包含1和BHK,並且它匹配包含任何這些數據的所有數據。無論是「1」或「BHK」或查詢中的任何其他關鍵字,這是我不想要的。
我搜索了相關的問題,並發現一些有希望的答案,但沒有工作:
這裏就是我已經嘗試過:
1. Performing EXACT match on SOLR search 這個答案完全符合我的問題,但我不能這樣做即使在每一步之後。
2.我已將<solrQueryParser defaultOperator="AND"/>
添加到我的schema.xml以強制查詢遵循AND規則,但它也不起作用。
3.將「<str name="mm">100%</str>
」添加到我的solrConfig.xml中的「/ query」requestHandler中以匹配100%的關鍵字,但這也使我無望。
我想要的幾乎與fredseagul(第一點)在他的問題中引用的內容相同。
任何專家誰可以詳細說明整個事情,請介入。
注意:我只想通過修改架構/任何其他配置,不想進行復雜的查詢。只有結果具有的所有關鍵字st或rt或在字段應返回。 標題字段是一個例外,如果查詢中的任何一個關鍵字與標題關鍵字匹配,那麼應返回該結果。
請不要標記爲重複。我爲此搜尋了很多。