【问题标题】:Spellcheck Solr: solr.DirectSolrSpellChecker config拼写检查 Solr:solr.DirectSolrSpellChecker 配置
【发布时间】:2015-08-24 10:59:43
【问题描述】:

我正在尝试使用 solr.DirectSolrSpellChecker 测试 Solr 4.7.2 的拼写检查功能(您不需要构建专用索引)。

我的索引中有一个名为“title”的字段;我使用复制字段定义创建了一个名为“title_spell”的字段,用于查询拼写检查(title_spell 已正确填写)。但是,在 admin solr 管理控制台中,我总是收到空洞的建议。

例如:我有一个标题为“A B 汽车”的 solr 文档;我在管理控制台中输入(拼写检查交叉并在输入字段 spellcheck.q 下)“atuomobile”。我希望至少能得到“A B 汽车”或“汽车”之类的东西,但拼写检查建议仍然为空......

我的配置:

schema.xml(仅复制相关部分):

    <fieldType name="textSpell" class="solr.TextField" positionIncrementGap="100" omitNorms="true">
        <analyzer type="index">
            <tokenizer class="solr.StandardTokenizerFactory"/>
            <filter class="solr.LowerCaseFilterFactory"/>
            <filter class="solr.StandardFilterFactory"/>
        </analyzer>
        <analyzer type="query">
            <tokenizer class="solr.StandardTokenizerFactory"/>
            <filter class="solr.SynonymFilterFactory" synonyms="de_DE/synonyms.txt" ignoreCase="true"
                    expand="true"/>
            <filter class="solr.LowerCaseFilterFactory"/>
            <filter class="solr.StandardFilterFactory"/>
        </analyzer>
    </fieldType>
    ...
    <field name="title_spell" type="textSpell" indexed="true" stored="true" multiValued="false"/>

solr.xml(只复制相关部分):

<searchComponent name="spellcheck" class="solr.SpellCheckComponent">
    <str name="queryAnalyzerFieldType">textSpell</str>
    <lst name="spellchecker">
        <str name="name">default</str>
        <str name="field">title_spell</str>
        <str name="classname">solr.DirectSolrSpellChecker</str>
        <str name="distanceMeasure">internal</str>
        <float name="accuracy">0.5</float>
        <int name="maxEdits">2</int>
        <int name="minPrefix">1</int>
        <int name="maxInspections">5</int>
        <int name="minQueryLength">4</int>
        <float name="maxQueryFrequency">0.01</float>
        <float name="thresholdTokenFrequency">.01</float>
    </lst>
</searchComponent>
...
<requestHandler name="standard" class="solr.SearchHandler" default="true">
    <lst name="defaults">
        <str name="defType">edismax</str>
        <str name="echoParams">explicit</str>
    </lst>
    <!--Versuch, das online datum mit in die Gewichtung zu nehmen...-->
    <lst name="appends">
        <str name="bf">recip(ms(NOW/MONTH,sort_date___d_i_s),3.16e-11,50,1)</str>
        <!--<str name="qf">title___td_i_s_gcopy^1e-11</str>-->
        <str name="qf">title___td_i_s_gcopy^21</str>
        <str name="q.op">AND</str>
    </lst>


    <arr name="last-components">
        <str>spellcheck</str>
    </arr>
</requestHandler>

我错过了什么?感谢您的回答!

【问题讨论】:

  • 您能提供您正在使用的查询网址吗?
  • 网址如下:
  • localhost:8080/solr/service/select?q=*%3A*&wt=json&indent=true&spellcheck=true&spellcheck.q=atuomobile
  • 找到解决方案了吗?

标签: solr lucene spell-checking


【解决方案1】:

您的索引有多大?对于小型索引(想想少于几百万个文档),您将不得不调整 accuracymaxQueryFrequencythresholdTokenFrequency。 (实际上,在较大的索引上也可能值得这样做。)

例如,我的 150 万个文档索引使用以下设置:

      <float name="maxQueryFrequency">0.01</float>
      <float name="thresholdTokenFrequency">.00001</float>
      <float name="accuracy">0.5</float>

accuracy 告诉 Solr 一个结果需要有多准确才能被认为值得作为建议返回。

maxQueryFrequency 告诉 Solr 该术语需要在索引中出现的频率才能被视为值得作为建议返回。

thresholdTokenFrequency 告诉 Solr 该术语必须包含在多少文档中才能被视为值得作为建议返回。

如果您计划对多个短语使用拼写检查,您可能需要在您的 title_spell 字段中添加一个 ShingleFilter

您可以尝试的另一件事是将queryAnalyzerFieldType 设置为title_spell

【讨论】:

  • 索引真的很小;目前1500,未来几年不会超过10000。我尝试更改 queryAnalyzerFieldType 但没有帮助,我将尝试调整其他参数
  • 那么您肯定需要调整这些参数。您的阈值和查询频率可能会非常非常低。
【解决方案2】:

您能否尝试编辑您的requestHandler 声明。

<requestHandler name="/standard" class="solr.SearchHandler" default="true">

查询网址为:

http://localhost:8080/solr/service/standard?q=&lt;term&gt;&amp;qf=title_spell

首先尝试使用小术语并了解其行为方式。这里的一个问题是它只会返回以相同query term 开头的所有术语。您可以使用FuzzyLookupFactory,它将匹配并返回模糊结果。更多信息请查看solr suggester wiki

【讨论】:

  • 我尝试编辑 requestHandler 但没有帮助。我将研究模糊搜索的配置
  • @R.. 你运行 solr 的模式是什么?如果您使用 CloudSolr 模式,请像 this 一样查询。
猜你喜欢
  • 2011-07-18
  • 2011-03-01
  • 2014-12-01
  • 1970-01-01
  • 2019-09-19
  • 2011-02-11
  • 2010-12-01
  • 2011-01-05
  • 2011-01-01
相关资源
最近更新 更多