0

これが私のクエリアナライザの定義です:

<tokenizer class="solr.WhitespaceTokenizerFactory"/>
<filter class="solr.SynonymFilterFactory" synonyms="companysyns.txt" ignoreCase="true" expand="true"/>
<filter class="solr.WordDelimiterFilterFactory" generateWordParts="1" generateNumberParts="1" catenateWords="0" catenateNumbers="0" catenateAll="0" splitOnCaseChange="0"/>
<filter class="solr.LowerCaseFilterFactory"/>

「companysyns.txt」には、次のような一般的な会社の単語の拡張がいくつかあります。

inc, inc., incorporated

このようなクエリを送信すると、次のようになります。

test:"some company inc"

solrdebugでこの予期しない結果が表示されます。

<str name="rawquerystring">test:"some company inc"</str>
<str name="querystring">test:"some company inc"</str>
<str name="parsedquery">
MultiPhraseQuery(test:"some company inc (inc incorporated)")
</str>
<str name="parsedquery_toString">test:"some company inc (inc incorporated)"</str>

「SomeCompany、Inc。」とは一致しません。しかし、を削除するWordDelimiterFilterFactoryと、同じクエリに対して、次のように表示されます。

<str name="rawquerystring">test:"some company inc"</str>
<str name="querystring">test:"some company inc"</str>
<str name="parsedquery">
MultiPhraseQuery(test:"some company (inc inc. incorporated)")
</str>
<str name="parsedquery_toString">test:"some company (inc inc. incorporated)"</str>

これは一致します。

を保持しているWordDelimiterFilterFactoryが、「inc」を削除した場合。同義語からのエントリ(ピリオドのあるもの)の場合、次のようにも機能します。

<str name="rawquerystring">test:"some company inc"</str>
<str name="querystring">test:"some company inc"</str>
<str name="parsedquery">
MultiPhraseQuery(test:"some company (inc incorporated)")
</str>
<str name="parsedquery_toString">test:"some company (inc incorporated)"</str>

WordDelimiterFilterFactory同義語拡張クエリを台無しにする理由はありますか?

ありがとう!

4

1 に答える 1

0

WordDelimiterFilterFactory は inc のドットを削除します。フィルターの順序を変更すると、問題なく動作するはずです。

    <tokenizer class="solr.WhitespaceTokenizerFactory"/>
<filter class="solr.LowerCaseFilterFactory"/>
<filter class="solr.WordDelimiterFilterFactory" generateWordParts="1" generateNumberParts="1" catenateWords="0" catenateNumbers="0" catenateAll="0" splitOnCaseChange="0"/>
<filter class="solr.SynonymFilterFactory" synonyms="companysyns.txt" ignoreCase="true" expand="true"/>
于 2012-04-19T13:29:44.520 に答える