2012-12-13 103 views
0

如何在solr中針對多個字段搜索多個值?如何在solr中針對多個字段搜索多個值?

我的情景:

目前schema.xml中,我使用<solrQueryParser defaultOperator="AND"/>

<copyField source="COL1" dest="defaultsearch"/> 
<copyField source="COL2" dest="defaultsearch"/> 

<fieldType name="text_search" class="solr.TextField" positionIncrementGap="100"> 
<analyzer> 
    <tokenizer class="solr.WhitespaceTokenizerFactory" /> 
    <filter class="solr.LowerCaseFilterFactory" />  
</analyzer> 
</fieldType> 

<defaultSearchField>defaultsearch</defaultSearchField> 

例如:

我的搜索查詢就像q =好男孩

我去取既像男孩記錄應該存在於任COL1 COL2或。

但對我來說它給出結果,與像目前在COL1和目前在COL2男孩目前在COL2和目前在COL1男孩其他結果的預期。

請建議我如何找到既良好男孩結果應該存在於任COL1 COL2或。

+0

感謝您的迴應。我沒有明白你的觀點。你能否舉個例子來解釋一下。 – Kaven

+0

您能否提供您當前的查詢並告訴我們它做了什麼以及您認爲它應該做什麼!? – heinob

+0

對不起。內容更新與其他信息。 – Kaven

回答

0

,如果你需要在COL1和COL2精確匹配,那麼你可以執行以下(假定COL1和COL2都是字符串): -

q=(COL1:"Good Boy" OR COL2:"Good Boy") 

如果你不要求精確匹配和短語應包含「好」和「男孩」以任何順序,然後嘗試以下(未經測試): -

q=(COL1:*Good Boy* OR COL2: *Good Boy*) 
+0

感謝您的回答最大。對於q =(COL1:*好男孩*或COL2:*好男孩*),它不會給出預期的結果。爲此,我所做的是** q =((COL1:*好*和COL1:*男孩*)或(COL2:*好*和COL2:*男孩*))** – Kaven