2

製品コード (FI302010、RR220011 など) を含む通常のテキストを入力するテキスト フィールドがあります。これらの製品番号を検索できるようにしたいと思います。私はANALYSISツールで試してみました - そしてここではそれが可能であるように見えます. 標準のテキストフィールドは、製品コードを「FI」と「302010」に分割する単語区切りを行いますが、クエリとインデックスの両方で同じことが起こる限り、問題にはなりません。スキーマ ブラウザを見ると、製品コードが見つかりませんが、コードの語幹バージョンのようなものを見つけることができます (つまり、30201 - 最後の 0 が欠落しています)。

さまざまなテキスト タイプ (text_ws、textTight、およびテキスト) を使用してみましたが、検索を実行できるものはありません。

テキストでテキスト検索を有効にするにはどうすればよいですか?

ありがとう

4

3 に答える 3

4

solr.KeywordTokenizerFactoryをトークナイザーとして使用するには、このフィールドを構成する必要があるようです。
名前が実際には伝わらないため、このトークナイザーは基になるフィールドを1つのトークンとして処理し、スペース、文字から数字、数字から文字への遷移、句読点などを残します(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>

より一般的には、ユーザーがこれらの識別子の特定の形式(句読点や他のセパレーターがある場合は、など)。

ただし、別のアナライザーを使用する場合の問題は、フィールドを一般的なテキスト検索に関連付けることができないことです。これは、些細なことでは、ユーザーのクエリを処理する方法が1つしかないためです。

于 2010-12-13T17:01:37.340 に答える
1

ここで解決策を見つけました:http://search-with-fast-and-solr.blogspot.com/2010/12/maxfieldlength-in-solr.html

solr がドキュメントを 10000 語で切り詰めていたことが判明したため、solrconfig.xml の maxFieldLength 設定を増やす必要がありました

ご意見ありがとうございます。

于 2010-12-14T10:01:16.293 に答える
0

これは、実際にはサンプル構成で機能します。

ストックSolr 1.4.1を取得してサンプル構成を実行すると、分析ツールは、これがストックテキストフィールドで機能することを示していることがわかります。

次に、確認のために、サンプル スキーマの「features」フィールドがテキスト型であることに注意してください。apache-solr-1.4.1/example/exampledocs にあるサンプル ファイルの 1 つを編集します。「monitor.xml」と言います。1 つのドキュメントの機能フィールドに製品コードを追加します。(そして両側にスペース)

ファイルを Solr に送信します (java -jar post.jar monitor.xml を使用)。さぁ、探しに行きましょう。できます。スキーマ ブラウザを確認します。機能フィールドにすべての用語を表示します。数はそれ自体で用語に含まれていることに注意してください。

それはすべて私にとってうまくいきます。

スキーマ ブラウザに何が起こったのかわかりません。おそらくタイプミスですか? 数字はステミングされません。末尾の文字がゼロではなく o (文字) である場合、それが問題になる可能性があります。

keywordtokenizer を使用すると、元の質問であった製品コードの数値部分を見つけることができなくなります。

于 2010-12-14T08:04:16.720 に答える