2013-04-28 85 views
3

solr中有兩個文本字段,它們都是白色空間標記並且具有小寫過濾器。下面是模式:查詢兩個字段相同的文檔?

<fieldType name="text_ac" class="solr.TextField" positionIncrementGap="100"> 
    <analyzer type="index"> 
    <tokenizer class="solr.WhitespaceTokenizerFactory"/> 
    <filter class="solr.LowerCaseFilterFactory"/> 
    </analyzer> 
    <analyzer type="query"> 
    <tokenizer class="solr.WhitespaceTokenizerFactory"/> 
    <filter class="solr.LowerCaseFilterFactory"/> 
    </analyzer> 
</fieldType> 

<field name="field1" type="text_ac" indexed="true" stored="true" required="false" omitNorms="true" default=""/> 

<field name="field2" type="text_ac" indexed="true" stored="true" required="false" omitNorms="true" default=""/> 

如何查詢Solr的返回結果FIELD1整串是一樣的場2在查詢時(字段1 ==域2)?

謝謝。

+0

您可以給我們提供一個例子嗎? – Jayendra 2013-04-28 09:50:32

+1

偶然,你是否想要執行[Solr中的加入](http://wiki.apache.org/solr/Join)? – femtoRgon 2013-04-29 15:46:07

+0

@Jayendra,我已經添加了模式。謝謝。 – Henry 2013-04-29 19:41:25

回答

9

據我所知,Solr或Lucene核心都不支持在文檔中比較一個字段和另一個字段。

完成此操作的一種簡單方法是在索引時執行比較,並將結果存儲在索引中。也就是說,如果您有field1field2,請創建一個字段1_equals_2,並根據您在添加文檔時的比較結果將其與true進行索引(如果它們相同)。然後你可以簡單地搜索1_equals_2:true

+0

謝謝,這在索引時肯定是一個選項。 – Henry 2013-05-03 21:30:03

1

您是否試過函數'strdist'和範圍查詢'frange'?像這樣的範圍查詢,將有助於:

{!FRANGE L = 1 U = 1} strdist(字段1,字段2,編輯)