我們有數百萬條記錄。最初我們使用lucene來索引數據,但由於OutofMemeory異常,決定將數據移動到solr。以下是我們在schema.xml中聲明的用於執行索引和搜索操作的字段。lucene搜索查詢不在solr4.6中工作
<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 =(來源: 「ABC」 或目標: 「ABC」 或過時的: 「ABC」)和公司的: 「TC」
模糊搜索:
字符串searchstr =(來源:新品牌推出〜0.7或目標:全新品牌推出〜0.7或過時的:新的品牌推出〜0.7)及公司 「BB」
默認搜索
字符串searchstr =(來源:新品牌推出*或目標:全新品牌推出*或棄用:新品牌推出*)和公司:在Solr的「CC」
現在,以上查詢是不加工。當用戶在UI中輸入上面的「新品牌推出」短語給它零結果。有時候我們正面臨不在lucene中區分大小寫的問題。
請建議我在哪裏做錯了。
在我的應用程序中,我想像搜索這樣的短語。例如:我想搜索「新品牌推廣*」,並且應該只以「新品牌推出」的形式獲得結果,但正如您所提到的,這是在源字段中搜索「新」,其餘字詞在默認字段中搜索。我想要得到我得到的表單SQL查詢的行爲:field1像'新品牌推廣*'或field2像''新品牌推廣*''。我如何實現這種行爲。 – Rajesh