【问题标题】:SOLR 8.1.1 EdgeNGramFilterFactory parsing querySOLR 8.1.1 EdgeNGramFilterFactory 解析查询
【发布时间】:2019-07-30 20:28:19
【问题描述】:

我有一个 SOLR 4.10.2 内核,我正在升级到 8.1.1。

我使用 default_config set 手动创建了一个 8.1.1 核心,然后将设置引入 8.1.1 架构。

我已经调整了 schema.xml 和 solrconfig.xml,并且我在 8.1.1 中有可查询的核心。

我有一个名为公司的字段:

<field name="Company" type="string" indexed="true" stored="true"/>
<field name="IDX_Company" type="text_general" indexed="true" stored="false" multiValued="true" />
<copyField source="Company" dest="IDX_Company"/>

在 4.10.2 中运行查询时:

IDX_Company:蓝色

打开 debugQuery,我看到查询被解析成碎片(正确)

"debug": {
    "rawquerystring": "IDX_Company:blue",
    "querystring": "IDX_Company:blue",
    "parsedquery": "(IDX_Company:b IDX_Company:bl IDX_Company:blu IDX_Company:blue)/no_coord",

...

当我针对 8.1.1 运行此程序并启用 debugQuery 时,我得到以下信息:

"debug":{
    "rawquerystring":"IDX_Company:blue",
    "querystring":"IDX_Company:blue",
    "parsedquery":"IDX_Company:blue",

...

似乎没有应用 EdgeNGramFilterFactory - 根据文档,我对 EdgeNGramFilterFactory 配置所做的唯一更改是删除“side”属性。 此外,根据文档,我将 SynonymFilterFactory 替换为 SynonmGraphFilterFactory,并添加了 FlattenGraphFilterFactory。

我已经尝试删除 FlattenGraphFilterFactory,我已经清除并重新填充了核心(重新索引),我已经停止并启动了 SOLR 8.1.1,没有任何区别。

这是我在 schema.xml 中使用的 text_general 的定义

<fieldType name="text_general" class="solr.TextField" positionIncrementGap="100" multiValued="true">
      <analyzer type="index">
        <tokenizer class="solr.StandardTokenizerFactory"/>
        <filter class="solr.EdgeNGramFilterFactory" minGramSize="1" maxGramSize="15"/> <!-- RDH - removed side="front"-->
        <filter class="solr.StopFilterFactory" ignoreCase="true" words="stopwords.txt" />
        <!-- RDH SynonymFilterFactory has been deprecated, replace with SynonymGraphFilterFactory -->
        <filter class="solr.SynonymGraphFilterFactory" synonyms="synonyms.txt" ignoreCase="true" expand="true"/> 
        <!-- RDH https://lucene.apache.org/solr/guide/8_1/filter-descriptions.html
            Flatten Graph Filter
            This filter must be included on INDEX-time analyzer specifications that include at least one graph-aware filter, including Synonym Graph Filter and Word Delimiter Graph Filter.
        -->
        <filter class="solr.FlattenGraphFilterFactory"/>  
        <filter class="solr.LowerCaseFilterFactory"/>
        <!-- strip all punctuation -->
        <filter class="solr.PatternReplaceFilterFactory" pattern="[^\p{L}\p{N} ]" replacement=" " replace="all" /> <!-- RDH -->
      </analyzer>
      <analyzer type="query">
        <tokenizer class="solr.StandardTokenizerFactory"/>       
        <filter class="solr.EdgeNGramFilterFactory" minGramSize="1" maxGramSize="15"/> <!-- RDH - removed side="front"-->
        <filter class="solr.StopFilterFactory" ignoreCase="true" words="stopwords.txt" />
        <!-- RDH SynonymFilterFactory is deprecated, replace with SynonymGraphFilterFactory -->
        <filter class="solr.SynonymGraphFilterFactory" synonyms="synonyms.txt" ignoreCase="true" expand="true"/>
        <!-- RDH https://lucene.apache.org/solr/guide/8_1/filter-descriptions.html
            Flatten Graph Filter
            This filter must be included on INDEX-time analyzer specifications that include at least one graph-aware filter, including Synonym Graph Filter and Word Delimiter Graph Filter.
        -->
        <filter class="solr.FlattenGraphFilterFactory"/>  
        <filter class="solr.LowerCaseFilterFactory"/>
        <!-- strip all punctuation -->
        <filter class="solr.PatternReplaceFilterFactory" pattern="[^\p{L}\p{N} ]" replacement=" " replace="all" /> <!-- RDH -->
      </analyzer>
    </fieldType>

【问题讨论】:

  • 你确定你的字段定义已经加载了吗?较新版本的 Solr 默认已切换到托管模式,所以我猜测当前使用的模式不是您编辑的模式。 Solr 中的管理页面应该能够告诉您该字段的当前活动定义是什么(分析页面将向您显示每个步骤和调用的过滤器)。
  • @MatsLindh 我可以在模式浏览器中看到该字段,我可以查询并查看该字段中的数据,因此我知道该字段已加载数据。还在模式浏览器中检查了 text_general 并且它与 schema.xml 中的内容相匹配。我看看他分析的东西

标签: apache solr tokenize


【解决方案1】:

虽然我通过清除数据并将数据发布到核心来重新加载信息,但我忽略了进入核心管理页面,选择核心,然后单击重新加载按钮。

现在查询已按预期解析。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-09-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-09-20
    • 2015-02-15
    相关资源
    最近更新 更多