0

NGramFilterFactory を使用しています。私のスキーマは以下のとおりです

<fieldType name="c_text" class="solr.TextField">
<analyzer type="index">
    <tokenizer class="solr.WhitespaceTokenizerFactory"/>
    <filter class="solr.LowerCaseFilterFactory"/>
    <filter class="solr.NGramFilterFactory" minGramSize="1" maxGramSize="255"/>
</analyzer>

<analyzer type="query">
    <tokenizer class="solr.WhitespaceTokenizerFactory"/>
    <filter class="solr.LowerCaseFilterFactory"/>
</analyzer>
</fieldType>
<field name="parentId" type="string" indexed="true" stored="true"/>
<field name="data_s" type="c_text" indexed="true" stored="true"/>
<field name="email" type="c_text" indexed="true" stored="true"/>
<field name="receivedDate" type="tdate" indexed="true" stored="true"/>

data_s フィールドで「Hello World」などの正確なフレーズ検索をしたいのですが、できません。data_s
:hello worldを指定
すると、hello または world またはその両方を持つすべてのレコードが返されます。data_s
:"hello world"を指定
すると、何も返されません。

これで正確なフレーズ検索を行うにはどうすればよいですか。また、「ello」などの部分的なテキストを検索する必要があるため、NGramFilterFactory を使用しています。

したがって、私の要件は、正確なフレーズと部分的なテキストも検索することです。

4

1 に答える 1

1

私の解決策: -

これにはコピーフィールドを使用しています。

<field name="content" type="text_general" indexed="true" stored="false" 
 multiValued="true"/>
<copyField source="data_s" dest="content"/>

正確な検索を行う必要があるときはいつでも、「コンテンツ」フィールドで検索しています。

私はsolr3.5を使用していましたが、「text_general」はこのsolrバージョンのように定義されています

    <fieldType name="text_general" class="solr.TextField" positionIncrementGap="100">
      <analyzer type="index">
        <tokenizer class="solr.StandardTokenizerFactory"/>
        <filter class="solr.StopFilterFactory" ignoreCase="true" words="stopwords.txt" enablePositionIncrements="true" />
        <filter class="solr.LowerCaseFilterFactory"/>
      </analyzer>
      <analyzer type="query">
        <tokenizer class="solr.StandardTokenizerFactory"/>
        <filter class="solr.StopFilterFactory" ignoreCase="true" words="stopwords.txt" enablePositionIncrements="true" />
        <filter class="solr.SynonymFilterFactory" synonyms="synonyms.txt" ignoreCase="true" expand="true"/>
        <filter class="solr.LowerCaseFilterFactory"/>
      </analyzer>
</fieldType>
于 2012-06-06T18:27:55.477 に答える