2011-12-15 65 views
0

我想配置solr來索引oracle數據庫。我必須使領導通配符搜索和其他各種過濾器這樣在我的schema.xmlSolr q結果vs數據庫sql結果

<fieldType name="text" class="solr.TextField" positionIncrementGap="100"> 
    <analyzer type="index"> 
    <tokenizer class="solr.StandardTokenizerFactory"/> 
    <filter class="solr.StopFilterFactory" ignoreCase="true" words="stopwords.txt"/> 
    <filter class="solr.LowerCaseFilterFactory"/> 
    <filter class="solr.RemoveDuplicatesTokenFilterFactory"/> 
<filter class="solr.ReversedWildcardFilterFactory" withOriginal="true" 
     maxPosAsterisk="3" maxPosQuestion="2" maxFractionAsterisk="0.33"/> 
    </analyzer> 
    <analyzer type="query"> 
    <tokenizer class="solr.StandardTokenizerFactory"/> 
    <filter class="solr.SynonymFilterFactory" synonyms="synonyms.txt" ignoreCase="true" expand="true"/> 
    <filter class="solr.StopFilterFactory" ignoreCase="true" words="stopwords.txt"/> 
    <filter class="solr.LowerCaseFilterFactory"/> 
    </analyzer> 
</fieldType> 

我已經索引在數據庫中的所有搜索欄並使用相同的名稱作爲列名Solr的領域,因此我在選擇查詢db-data-config.xml只是一個select * from視圖;

我們獲得的solr和數據庫中的不同結果的查詢

例如如下的SQL查詢返回1307個記錄

select count(*) from VIEW 
where (COLUMN1 = 'Value0' and COLUMN2='Value1') 
OR COLUMN3 in ('Value2','Value3','Value4') 
AND COLUMN4='Value5' 

和solr的查詢作爲下面只返回7

(COLUMN1:(Value0) AND COLUMN2:(Value1)) 
    OR (COLUMN3:(Value2 OR Value3 OR Value4)) 
    AND (COLUMN4:(Value5)) 

我們只對1個視圖進行操作,其中包含所有相關數據。 solr配置索引到視圖中的所有列,我會認爲結果是相似的。有人可以解釋這種差異嗎?如問

編輯

添加值:Solr的查詢

COUNTRY_NAME:(United States) AND ELEMENT_CODE:(CT)) OR (UNIT_STATUS:(Operating OR Order OR Shipped)) AND (FRAME_GR_DISPLAY:(06A)) 

數據庫查詢

select * from VIEW where 
(COUNTRY_NAME = 'United States' AND ELEMENT_CODE='CT') 
OR UNIT_STATUS in ('Operating','Order','Shipped') 
    AND FRAME_GR_DISPLAY='06A' 
+0

有一個錯字,說`Valu0`而不是`Value0` – 2011-12-15 16:44:46

+0

什麼是實際值?他們真的是'value0','value1'等嗎? – 2011-12-15 17:19:50

回答

0

一般來說,如果你想逐字匹配,如SQL呢,你不應該使用的分析場類型。例如,在默認架構中,string字段類型(類solr.StrField)是未分析的。

如果您迷失在分析過濾器和標記器中,並且不太明白髮生了什麼,請嘗試在您的Solr查詢字符串中使用debugQuery = on或使用Solr analysis tool