Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/solr/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何突出显示最长的solr标记_Solr_Solr Highlight - Fatal编程技术网

如何突出显示最长的solr标记

如何突出显示最长的solr标记,solr,solr-highlight,Solr,Solr Highlight,我试图突出显示查询中的确切搜索词,但突出显示的词将作为标记化字段中最短的标记返回。例如,查询“Entr”将导致高亮显示entry。我希望高亮显示返回entry 这是最简单的查询,匹配答案中术语的每个实例: q=标题标记:Entr&hl=on&hl.fl=标题标记&hl.useFastVectorHighlighter=true 移除FastVectorHighlighter将给出整个术语,但每个结果仅一次,在某些情况下,它不匹配 我尝试添加hl.q、hl.highlightingMultiTer

我试图突出显示查询中的确切搜索词,但突出显示的词将作为标记化字段中最短的标记返回。例如,查询“Entr”将导致高亮显示entry。我希望高亮显示返回entry

这是最简单的查询,匹配答案中术语的每个实例: q=标题标记:Entr&hl=on&hl.fl=标题标记&hl.useFastVectorHighlighter=true

移除FastVectorHighlighter将给出整个术语,但每个结果仅一次,在某些情况下,它不匹配

我尝试添加hl.q、hl.highlightingMultiTerm、hl.usephrasehiller和其他几个变量,但我只能得到最短标记的每个实例或搜索项的第一个实例

我试图突出显示的字段是Title_标记,它是从字符串复制的

<field name="RawTitle" type="string" required="true" />
<field name="Title_Tokens" type="Tokenized_Title" indexed="true" stored="true" termVectors="true" termPositions="true" termOffsets="true"/>
<copyField source="RawTitle" dest="Title_Tokens" />

<fieldType name="Tokenized_Title" class="solr.TextField">
  <analyzer type="index">
    <tokenizer class="solr.NGramTokenizerFactory" maxGramSize="15" minGramSize="3"/>
    <filter class="solr.LowerCaseFilterFactory"/>
  </analyzer>
</fieldType>

在分析“entr”字段时,我看到了“ent、entr和ntr”的标记。对我来说,第一个匹配的标记看起来是高亮显示的,但我想对最长的匹配进行优先级排序。这就是正在发生的事情,还是我做了一些不正确的事情


我还考虑使用EdGeNigRotoKeNeZiFrand从单词后面匹配,但是这会停止单词中间的匹配。

字段需要查询。索引器工作正常,但它匹配所有内容并返回第一个匹配标记。结合查询分析器,只匹配最长的结果

<fieldType name="Tokenized_Title" class="solr.TextField">
  <analyzer type="index">
    <tokenizer class="solr.NGramTokenizerFactory" minGramSize="1" maxGramSize="15" />
    <filter class="solr.LowerCaseFilterFactory"/>
  </analyzer>
  <analyzer type="query">
    <tokenizer class="solr.StandardTokenizerFactory"/>
    <filter class="solr.LowerCaseFilterFactory"/>
  </analyzer>
</fieldType>

该字段需要查询。索引器工作正常,但它匹配所有内容并返回第一个匹配标记。结合查询分析器,只匹配最长的结果

<fieldType name="Tokenized_Title" class="solr.TextField">
  <analyzer type="index">
    <tokenizer class="solr.NGramTokenizerFactory" minGramSize="1" maxGramSize="15" />
    <filter class="solr.LowerCaseFilterFactory"/>
  </analyzer>
  <analyzer type="query">
    <tokenizer class="solr.StandardTokenizerFactory"/>
    <filter class="solr.LowerCaseFilterFactory"/>
  </analyzer>
</fieldType>