【问题标题】:solr suggester has no resultssolr 建议器没有结果
【发布时间】:2021-11-17 16:54:27
【问题描述】:

我尝试为 solr 设置一个建议器。我有多个包含信息的字段。这是一个例子(字段:值):

基因:EGFR
cac: abf.4c3C
ccd: frl.dlgfX
主题:EGFR - 这种变化
编号:7390

现在,我希望 solr 能够在键入时获取文档,无论用户是否开始键入基因名称或 id 或 ...

solrconfig.xml 中的建议器看起来像这样(或多或少从示例中复制/粘贴):

<requestHandler name="/suggest" class="solr.SearchHandler" startup="lazy">
  <lst name="defaults">
    <str name="suggest">true</str>
    <str name="suggest.count">10</str>
    <str name="suggest.dictionary">suggest_muripedia</str>
  </lst>
  <arr name="components">
    <str>suggest</str>
  </arr>
</requestHandler>

<!-- Suggester component -->
<searchComponent name="suggest" class="solr.SuggestComponent">
  <lst name="suggester">
    <str name="name">suggest_muripedia</str>
    <str name="lookupImpl">FuzzyLookupFactory</str>
    <str name="dictionaryImpl">DocumentDictionaryFactory</str>
    <str name="field">_text_cf</str>
    <str name="weightField">subject</str>
    <str name="suggestAnalyzerFieldType">string</str>
    <str name="buildOnStartup">false</str>
  </lst>
</searchComponent>

_text_cf 是由上述字段的复制规则填充的字段,定义如下:

{
      "name":"_text_cf",
      "type":"mytext",
      "multiValued":true,
      "indexed":true,
      "stored":true},

字段类型mytext 看起来像这样

 {
      "name":"mytext",
      "class":"solr.TextField",
      "positionIncrementGap":"100",
      "multiValued":true,
      "indexAnalyzer":{
        "tokenizer":{
          "class":"solr.PatternTokenizerFactory",
          "pattern":"-"},
        "filters":[{
            "class":"solr.TrimFilterFactory"},
          {
            "class":"solr.StopFilterFactory",
            "words":"stopwords.txt",
            "ignoreCase":"true"},
          {
            "class":"solr.LowerCaseFilterFactory"}]},
      "queryAnalyzer":{
        "tokenizer":{
          "class":"solr.PatternTokenizerFactory",
          "pattern":"-"},
        "filters":[{
            "class":"solr.TrimFilterFactory"},
          {
            "class":"solr.StopFilterFactory",
            "words":"stopwords.txt",
            "ignoreCase":"true"},
          {
            "class":"solr.SynonymGraphFilterFactory",
            "expand":"true",
            "ignoreCase":"true",
            "synonyms":"synonyms.txt"},
          {
            "class":"solr.LowerCaseFilterFactory"}]}},

我尝试过的查询没有返回任何结果:

suggest?q=egfr

我不知道如何排除故障,而且我想我还没有完全理解建议请求会发生什么。

【问题讨论】:

    标签: solr autosuggest


    【解决方案1】:

    建议者确实返回了结果,但由于 suggestAnalyzerFieldType 已设置为 string,因此查询区分大小写。将字段类型更改为我自己定义的字段类型mytext 解决了这个问题。

    【讨论】:

      猜你喜欢
      • 2016-08-30
      • 2019-12-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多