【问题标题】:Searching for numbers/product codes in Solr在 Solr 中搜索数字/产品代码
【发布时间】:2011-05-24 18:53:16
【问题描述】:

我有一个文本字段,我正在向其中输入包含产品代码(例如 FI302010、RR220011 等)的普通文本。 我希望能够搜索这些产品编号。 我已经在 ANALYSIS-tool 中尝试过 - 在这里看起来应该是可能的。标准文本字段会进行一些单词分隔,将产品代码拆分为“FI”和“302010”——但只要查询和索引都发生同样的情况,这应该不是问题。 当我查看架构浏览器时,我找不到产品代码,但我可以找到看起来像代码的词干版本的东西(即 30201 - 最后一个 0 丢失)。

我尝试过使用不同的文本类型(text_ws、textTight 和 text) - 但没有一个允许我进行搜索。

我应该如何在文本中启用文本搜索?

谢谢

【问题讨论】:

    标签: text indexing solr numbers querying


    【解决方案1】:

    您似乎需要将此字段配置为使用 solr.KeywordTokenizerFactory 作为其标记器。
    由于名称并没有真正传达,这个标记器会将基础字段作为一个单独的标记处理,留下空格、字母到数字、数字到字母的转换、标点符号等等(除非你也有 char过滤器)。

    我不了解配置 Solr 的最新细节,但我猜该字段的架构中的条目可能看起来像这样:

    <fieldtype name="myProductNumberFIeld" class="solr.TextField">
      <analyzer>
        <!-- can have a few filters of course -->
        <charFilter class="solr.MappingCharFilterFactory" 
           mapping="mapping-ISOLatin1Accent.txt"/>
        <filter class="solr.LowerCaseFilterFactory"/>
        <!-- etc. -->
    
        <!-- That's the main thing you need -->
        <tokenizer class="solr.KeywordTokenizerFactory"/>
    
      </analyzer>
    </fieldtype>
    

    更一般地,您需要为产品编号、零件编号、UPC 等定义一个相当具体的分析器,以提高对这些字段的召回率,因为用户并不总是知道这些标识符的特定格式 (标点符号和其他分隔符(如果有的话)应该是等等)。

    然而,使用不同的分析器的问题在于,它会阻止将字段与一般文本搜索相关联,因为在琐碎的时间,只能有一种方法来处理用户的查询。

    【讨论】:

      【解决方案2】:

      这实际上只适用于示例配置。

      查看 Solr 1.4.1 并运行示例配置,您可以看到,正如您所说,分析工具显示这适用于股票文本字段。

      然后,为了验证,请注意示例架构中的“功能”字段是文本类型。编辑 apache-solr-1.4.1/example/exampledocs 中的示例文件之一。说“monitor.xml”。将产品代码添加到一个文档的 features 字段中。 (两边各留一个空格)

      将文件发布到 Solr(使用 java -jar post.jar monitor.xml)。现在去寻找它。有用。检查模式浏览器。显示特征字段中的所有术语。请注意,数字本身就存在于一个术语中。

      这一切都适合我。

      不确定您的架构浏览器发生了什么,也许是错字?数字不是词干的。如果尾随字符是 o(字母)而不是零,那可能是您的问题。

      使用keywordtokenizer 将无法找到产品代码的数字部分,这是最初的问题。

      【讨论】:

        【解决方案3】:

        我在这里找到了解决方案:http://search-with-fast-and-solr.blogspot.com/2010/12/maxfieldlength-in-solr.html

        原来 solr 将文档截断为 10000 字 - 所以我不得不增加 solrconfig.xml 中的 maxFieldLength 设置

        感谢您的意见!

        【讨论】:

          猜你喜欢
          • 2014-07-04
          • 1970-01-01
          • 1970-01-01
          • 2013-03-12
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多