Solr的通配符搜索我試圖運行一些通配符與布爾運算符搜索。當我運行下面的查詢,我得到了相應的結果: -與布爾運算符
q=field1:*val1 val2* AND field2:val3
上面顯示所有的記錄,其中val1和任意組合VAL2發生在Field 1和Field2包含的價值VAL3。
但是,如果我運行下面的查詢: -
q=field1:*val1 val2* AND field2:val3 AND -field3:(*val1 val2* *:*)
FIELD1搜索開始行爲異常。據我理解debugQuery結果是,上述查詢第一搜尋這些記錄,其中任一VAL1或val2的(或兩者)中出現FIELD1,通過FIELD2對其過濾,然後過濾,其中場3不包含的組合這些記錄val1和val2。所以,這個查詢可以顯示那些val2(而不是val1)出現在field1中的記錄。
我試圖接近搜索也FIELD1。沒有效果。但後來,我讀到鄰近搜索不適用於通配符。
字段上面的定義如下: -
<field name="field1" type="text_general" indexed="true" stored="false" multiValued="true" />
<field name="field2" type="text_general" indexed="true" stored="false" />
<fieldType name="text_general" class="solr.TextField" positionIncrementGap="100">
<analyzer type="index">
<tokenizer class="solr.WhitespaceTokenizerFactory"/>
<filter class="solr.StopFilterFactory" ignoreCase="true" words="stopwords.txt" enablePositionIncrements="true" />
<filter class="solr.LowerCaseFilterFactory"/>
</analyzer>
<analyzer type="query">
<tokenizer class="solr.WhitespaceTokenizerFactory"/>
<filter class="solr.StopFilterFactory" ignoreCase="true" words="stopwords.txt" enablePositionIncrements="true" />
<filter class="solr.SynonymFilterFactory" synonyms="synonyms.txt" ignoreCase="true" expand="true"/>
<filter class="solr.LowerCaseFilterFactory"/>
</analyzer>
<analyzer type="select">
<tokenizer class="solr.WhitespaceTokenizerFactory"/>
<filter class="solr.StopFilterFactory" ignoreCase="true" words="stopwords.txt" enablePositionIncrements="true" />
<filter class="solr.LowerCaseFilterFactory"/>
</analyzer>
</fieldType>
字段3是一個字符串,它是不給任何問題。是否有可能修改上述查詢,以便對FIELD1搜索只導致那些其中兩個val1和val2的存在(任何組合是可接受的)記錄?
更新:它工作時,我做了以下內容: -
q=field1:*val1 AND field1:val2* AND field2:val3 AND -field3:(*val1 val2* *:*)
但是,有沒有辦法做到沒有我的短語拿刀砍到個別單詞的一樣嗎?