2014-09-19 127 views
3

A我需要執行短語搜索。在搜索結果即時得到確切的短語匹配的,但看到高亮部分我看到這句話是記號化,即這是我所得到的,當我搜索prase「1天」:Solr:如何突出顯示整個搜索短語?

<arr name="post"> 
    <str><em>Day</em> <em>1</em> We have begun a new adventure! An early morning (4:30 a.m.) has found me meeting with</str> 
</arr> 

這是什麼我想收到的結果:

<arr name="post"> 
    <str><em>Day 1</em> We have begun a new adventure! An early morning (4:30 a.m.) has found me meeting with</str> 
</arr> 

我在做查詢是這樣的: 管理控制檯:

q = day 1 
fq = post:"day 1" OR title:"day 1" 
hl = true 
hl.fl =title,post 

選擇Q =天+ 1 & FQ =交%3A%22天+ 1%22 + OR +標題%3A%22天+ 1%22 &重量= XML &縮進=真& HL =真& hl.fl =標題%2Cpost & hl.simple.pre =%3Cem%3E & hl.simple.post =%3C%2Fem%3E

Theese是我的字段:

 <field name="post" type="text_general" indexed="true" stored="true" required="true" multiValued="false" /> 
     <field name="post" type="text_general" indexed="true" stored="true" required="true" multiValued="false" /> 

這是Solr模式部分我fied type text_general:

<fieldType name="text_general" class="solr.TextField" positionIncrementGap="100"> 
    <analyzer type="index"> 
    <tokenizer class="solr.WhitespaceTokenizerFactory"/> 
    <filter class="solr.StopFilterFactory" ignoreCase="true" words="stopwords.txt" enablePositionIncrements="true" /> 

    <!-- in this example, we will only use synonyms at query time 
    <filter class="solr.SynonymFilterFactory" synonyms="index_synonyms.txt" ignoreCase="true" expand="false"/> 
    --> 
    <filter class="solr.LowerCaseFilterFactory"/> 
    </analyzer> 
    <analyzer type="query"> 
    <tokenizer class="solr.WhitespaceTokenizerFactory"/> 
    <filter class="solr.GreekStemFilterFactory"/> 
    <filter class="solr.GreekLowerCaseFilterFactory"/> 
    <filter class="solr.StopFilterFactory" ignoreCase="true" words="stopwords.txt" enablePositionIncrements="true" /> 
    <filter class="solr.SynonymFilterFactory" synonyms="synonyms.txt" ignoreCase="true" expand="true"/> 
    <filter class="solr.LowerCaseFilterFactory"/> 
    </analyzer> 
</fieldType> 

B)我可以在突出顯示部分看到更令人不安的結果,即突出顯示不是預期的整個單詞,而是單個片段:.where you get to see all of Athens ... <em>Day</em> 2 - Carmens 我不想在突出顯示的部分中看到此結果(只需要看到「Day 1" )。有任何想法嗎 ?

我讀了Solr的高光部分,但..真的......甚至沒有一個例子!

+1

我有點被你的帖子的最後一節混淆。在開始時你寫道,你只收到第1天的回覆,而最後你寫了你收到另一個回覆。哪一個? – 2014-09-21 22:29:00

+0

所有的文檔都包含「第1天」,但在某些情況下,現場文章可以=「第1天,我做了這個和那個......第2天,我做了其他的事情......」。我確定在文檔部分中,結果至少有一句「第1天」。 '回覆'有兩種口味:文件和這些文件的亮點版本。 – 2014-09-22 05:57:09

回答

6

了需要插入的參數是hl.q這基本上意味着「我想這句話加以強調」和hl.usePhraseHighlighter =真實hl.useFastVectorHighlighter =真

所以通過添加到我原來的查詢:&hl.q="Day+1"&hl.usePhraseHighlighter=true&hl.useFastVectorHighlighter=true工作。對於B)

我將fq = post:"day 1" OR title:"day 1"更改爲fq = post:"day 1"。我知道後者從我所需要的無所作爲的工作中減少了。使用該

fastVectorHighliter配置:

<field name="post" type="text_general" indexed="true" stored="true" required="true" multiValued="false" termVectors="true" termPositions="true" termOffsets="true"/> 
1

看着docs我找到了一個選項,可以加入彼此相鄰的元素。

的選項hl.mergeContiguous

+2

有很多關於同一個問題的帖子,這個參數沒有起作用,而且針頭說這個試驗並沒有工作。例如http://stackoverflow.com/questions/16700916/solr-highlighting-every-word-individually-for-a-phrase-query – 2014-09-22 06:00:20