Configuration Solr q结果与数据库sql结果
我正在尝试配置solr以索引oracle数据库。我在schema.xml中启用了前导通配符搜索和各种其他过滤器Configuration Solr q结果与数据库sql结果,configuration,solr,Configuration,Solr,我正在尝试配置solr以索引oracle数据库。我在schema.xml中启用了前导通配符搜索和各种其他过滤器 <fieldType name="text" class="solr.TextField" positionIncrementGap="100"> <analyzer type="index"> <tokenizer class="solr.StandardTokenizerFactory"/> <filter class=
<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查询只返回7
(COLUMN1:(Value0) AND COLUMN2:(Value1))
OR (COLUMN3:(Value2 OR Value3 OR Value4))
AND (COLUMN4:(Value5))
我们只在一个视图上运行,该视图包含所有相关数据。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'
一般来说,如果希望像SQL一样进行逐字匹配,则不应使用已分析的字段类型。例如,在默认模式中,
字符串
字段类型(类solr.StrField)是未分析的
如果您在分析过滤器和标记器中迷失了方向,并且不太了解发生了什么,请尝试在Solr querystring中使用debugQuery=on,或者使用。有输入错误,表示
Valu0
而不是Value0
实际值是多少?它们真的是“value0”、“value1”等吗?错误号。实际值是与列相关的字符串类型。。例如,国家是美国等等……我希望结果是相似的,在OR操作和较大的查询中,结果相差很大,但如果我对sql和solr say条件和条件2或条件3进行简短查询,结果相差大约10。我应该期望它们类似吗?请发布实际值,它们与问题相关。但我希望启用前导通配符查询,这将要求我按设计分析字段类型。@sunny您确定要前导通配符,而不仅仅是正确的标记符吗?您(具体)需要什么样的查询?到目前为止,您提到的示例中没有前导通配符查询。我的意思是,我将使用前导通配符查询,因此我已经适当地配置了我的solrfield、text。我们的最终用户将使用诸如contains with、ends with之类的短语,我已将其映射到相应的solr引导通配符查询,并且工作正常。我们将使用所有布尔运算符启用搜索,文本搜索如大于、小于、包含、以..开头等。。
select * from VIEW where
(COUNTRY_NAME = 'United States' AND ELEMENT_CODE='CT')
OR UNIT_STATUS in ('Operating','Order','Shipped')
AND FRAME_GR_DISPLAY='06A'