0

text というフィールドで「population」という用語を照会する場合:

.../solr/select?q=text:(pop*)

"population" という単語を含む結果を返します。

ただし、アスタリスクの前に 5 文字以上ある場合は、何も返されません。

.../solr/select?q=text:(popula*)

ただし、これは機能します。

.../solr/select?q=text:(population)

これもそうです(理由はわかりません):

.../solr/select?q=text:(popul)

アスタリスクがないと、5 文字のみが機能し、全文が機能します。

「population」に限らず、他の単語も同様のようです(「numerator」を試してみました)。

5 文字の制限があるのはなぜですか?

ダウンロードしたsolrのバージョンからあまり変更していません。

フィールド「テキスト」のタイプは「text_en_splitting」です。

"text_en_splitting" には 2 つのアナライザーがあり、1 つはタイプが "index" で、もう 1 つはタイプが "query" です。どちらにも触れていません。

クエリ アナライザーは次のようになります。

  <analyzer type="query">
    <tokenizer class="solr.WhitespaceTokenizerFactory"/>
    <filter class="solr.SynonymFilterFactory" synonyms="synonyms.txt" ignoreCase="true" expand="true"/>
    <filter class="solr.StopFilterFactory"
            ignoreCase="true"
            words="lang/stopwords_en.txt"
            enablePositionIncrements="true"
            />
    <filter class="solr.WordDelimiterFilterFactory" generateWordParts="1" generateNumberParts="1" catenateWords="0" catenateNumbers="0" catenateAll="0" splitOnCaseChange="1"/>
    <filter class="solr.LowerCaseFilterFactory"/>
    <filter class="solr.KeywordMarkerFilterFactory" protected="protwords.txt"/>
    <filter class="solr.PorterStemFilterFactory"/>
  </analyzer>

インデックス アナライザーは同じように見えますが、「solr.SynonymFilterFactory」フィルターがありません。

4

2 に答える 2

0

Porter Stemmerの語幹は次のpopulation populous popul popula popularようになります。popul popul popul popula popular

したがってpopulationpopulステムを共有しますが、とは共有しませんpopula

指定したタイプの検索が必要な場合は、stringデータ型を使用します。このサイトで「Solr の文字列とテキスト」の質問を検索してください。

于 2012-07-09T05:24:45.890 に答える
0

分析ページを試して、そのクエリがどのように分析されているかをデバッグしてください。そうすれば、問題をより簡単に確認できます。ただし、PorterStemFilter が原因である可能性があります。削除してみてください。

于 2012-07-05T18:08:29.503 に答える