【发布时间】:2014-04-04 07:01:23
【问题描述】:
我们有数百万条记录。最初我们使用 lucene 来索引数据,但由于 OutofMemeory 异常,决定将数据移动到 solr。下面是我们在 schema.xml 中声明的用于执行索引和搜索操作的字段。
<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 api 来创建 solr 查询。
Solr查询代码:
SolrQuery solrQuery=new SolrQuery();
solrQuery.setQuery("id:*_TB");
solrQuery.setRows(10000);
solrQuery.addFilterQuery(searchStr);//
QueryResponse rsp = httpserver.query(solrQuery);
在 lucene 中,当用户在 UI 中键入短语时,以下查询在精确搜索、模糊搜索等中工作。
EX:- 新品牌推出
用于 lucene 中的精确搜索
searchstr = (source:"abc" OR target:"abc" OR deprecated:"abc") AND company:"tc"
模糊搜索:
searchstr =(来源:新品牌发布~0.7 OR 目标:新品牌发布~0.7 或弃用:新品牌发布~0.7)AND 公司:“bb”
默认搜索
searchstr =(来源:新品牌发布*或目标:新品牌发布*或弃用:新品牌发布*)AND公司:“cc”
现在在 solr 中,上面的查询不起作用。当用户在 UI 中输入上述“新品牌推出”短语时,结果为零。有时我们会遇到 lucene 中不区分大小写的问题。
请告诉我哪里做错了。
【问题讨论】: