2016-02-19 66 views
1

民間,通過標記的順序搜索

我們有一個要求,我們要通過令牌順序搜索solr中的項目。

例如如果Q =谷歌Facebook的

那麼就應該給予與關鍵字匹配的文檔「谷歌」第一 那麼它應該給人以關鍵字「臉譜」

下面給出的配置,但它不工作匹配的文檔。

<fieldType name="string_ci" class="solr.TextField" sortMissingLast="true" omitNorms="true"> 
    <analyzer type="index">   
     <tokenizer class="solr.WhitespaceTokenizerFactory"/> 
     <filter class="solr.LowerCaseFilterFactory"/> 
     <filter class="solr.EdgeNGramFilterFactory" minGramSize="3" maxGramSize="30"/> 
    </analyzer> 
    <analyzer type="query"> 
     <tokenizer class="solr.WhitespaceTokenizerFactory"/> 
     <filter class="solr.LowerCaseFilterFactory"/> 
     <filter class="solr.WordDelimiterFilterFactory"/> 
    </analyzer> 
</fieldType> 
+0

我們在討論多少個查詢詞? – MatsLindh

+0

我們將有5-6條查詢條件 –

回答

0

每個術語可以從第一個開始,然後delta遞減每個下一個術語。舉個例子,它可能是類似於「google^0.9臉書^ 0.5」的東西。這樣可以提升谷歌的facebook效果。提升會被乘以正常分數,並會影響其相對於其他分句的重要性。

+0

好的,這裏是另一個問題如果我們想要搜索術語「谷歌臉譜」,然後是「谷歌」和「臉譜。我們可以給一個像」(google^2.0 facebook^1.0)^ 10「 –

+0

那麼你可以做嵌套增強,可能。https://lucene.apache.org/core/2_9_4/queryparsersyntax.html#Boosting%20a%20Term – Yavar

+0

是這個語法正確fielddemo:(谷歌^ 2.0臉書^ 1.0)^ 10.0 OR fieldonedemo:(yahoo^2.0 twitter^1.0)^ 5.0。沒有弄清楚這個語法的文檔。 –