2011-12-15 63 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