A 我需要执行短语搜索。在搜索结果中,我得到了确切的短语匹配,但看着突出显示的部分,我看到这个短语被标记化,即这是我在搜索“第1天”时所得到的:
<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" />
这是我的fied类型text_general的solr架构部分:
<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
我不想在突出显示的部分看到这个结果(只需要看到两个单词“第1天”)。有什么想法吗?
我正在阅读Solr高亮部分但是......真的......甚至没有一个例子!!!
答案 0 :(得分:6)
需要插入的参数是hl.q
,这基本上意味着“我想要突出显示这个短语”,并且hl.usePhraseHighlighter = true和hl.useFastVectorHighlighter = true
因此,通过添加到我的原始查询:&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 :(得分:1)
查看docs我找到了一个选项,可以加入彼此相邻的元素的突出显示。
选项为hl.mergeContiguous