我们有上百万的记录。最初我们使用lucene索引数据,但由于OutofMemeory异常,我们决定将数据移动到solr。下面是我们在schema.xml中声明以执行索引和seach操作的字段。
<field name="product" type="string" indexed="true" stored="true" multiValued="false" />
<field name="source" type="string" indexed="true" stored="true" multiValued="false" />
<field name="target" type="string" indexed="true" stored="true" multiValued="false" />
<field name="pos" type="string" indexed="true" stored="true" multiValued="false" />
<field name="company" type="string" indexed="true" stored="true" multiValued="false" />
<field name="deprecated" type="string" indexed="true" stored="true" multiValued="false" />
<field name="id" type="string" indexed="true" stored="true" multiValued="false" required="true"/>我们正在使用solrj来查询craete solr。
Solr查询代码:
SolrQuery solrQuery=new SolrQuery();
solrQuery.setQuery("id:*_TB");
solrQuery.setRows(10000);
solrQuery.addFilterQuery(searchStr);//
QueryResponse rsp = httpserver.query(solrQuery);在lucene中,当用户在UI中输入短语时,下面的查询是在精确搜索、模糊搜索等方面进行的。
例:-新品牌推出
用于在lucene中进行精确搜索
searchstr =(来源:“abc”或目标:“abc”或不推荐:“abc”)和公司:“tc”
模糊搜索:
searchstr = (source:New Brand launched~0.7 OR target:New Brand launched~0.7 OR deprecated:New Brand launched~0.7) AND company:"bb"默认搜索
searchstr =(来源:新品牌启动*或目标:新品牌启动*或不再推荐:新品牌启动*)和公司:“cc”
现在在solr中,上面的查询不起作用。当用户在UI中输入上面的“新品牌推出”短语时,它给出的是零result.Sometime,我们面临的是大小写敏感的问题,而lucene则不是这样。
请告诉我我哪里做错了。
发布于 2014-04-04 11:24:05
(source:New Brand launched* OR target:New Brand launched* OR deprecated:New Brand launched*) AND company:"cc"
如果您不在要搜索的文本周围使用双引号,那么它将不是SOLR中的短语查询。所以source:New Brand launched*实际上会被搜索为
source:New OR defaultField:Brand OR defaultField:launched*
其中defaultField将是在schema.xml中定义的默认字段,OR/将按schema.xml中指定的默认运算符使用。相反,搜索source:"New Brand launched"阅读SOLR文档以获得更多信息。
https://stackoverflow.com/questions/22855797
复制相似问题