0

人の名前が記載されたドキュメントがあり、部分的な名前に基づいてそれらのドキュメントを返したいと思います。次に例を示します。

クエリ:「JosephGar*」

戻る必要があります

Joseph Garret
Joseph Garnier

solrを使用してそのクエリを作成するにはどうすればよいですか?

私が試してみました:

q=complete_name:"Joseph Gar*"
q=complete_name:"Joseph Gar"~5
q=complete_name:(Joseph AND Gar)
4

2 に答える 2

0

次のクエリを試すことができます:-

q = complete_name:Joseph Gar *

次に、JosephとGarの両方が指定された順序で一致するフレーズを後押しします。上記では、名前が「GarretJoseph」のような結果も生成されることに注意してください。ただし、ブーストのため、そのような結果は下に押し下げられます。

ただし、上記の順序に一致する結果のみが必要な場合は、次のリンクを参照することをお勧めします:-

https://issues.apache.org/jira/browse/SOLR-1604

上記では、ワイルドカードについて説明しています。

注:-上記のjarファイルを使用すると、ブール句の最大数を超えることがあります(solrconfig.xmlで増やすことができます。ただし、それでも十分でない可能性があります)。

于 2012-12-18T03:58:10.887 に答える
0

schema.xml のフィールド (complete_name) に次のフィールド タイプを試してください。

<fieldType name="text_search" class="solr.TextField" sortMissingLast="true" omitNorms="true">
    <analyzer>
        <tokenizer class="solr.KeywordTokenizerFactory"/>
        <filter class="solr.LowerCaseFilterFactory" />  
    </analyzer>   
</fieldType>

schema.xml のフィールド定義は次のようになります

<field name="complete_name" type="text_search" indexed="true" stored="true"/>

次のようなクエリで検索します

q=complete_name:*Joseph\ Gar*

アルファベットと数字以外の特殊文字を処理するには、すべての文字の前にエスケープ文字 \ を使用します。例: $ を含むテキストを検索するには、q=*\$* を指定します。

この回答で問題が解決することを願っています。

于 2012-12-18T08:49:30.130 に答える