2011-04-26 13 views
7

部分的な用語を検索できる文書検索エンジン(Xapian、Whoosh、Lucene、Solr、Sphinxなど)を探しています。例えば部分的な単語の文書検索

検索エンジンは「ブリトニー」または「英国」または一般的に単語マッチングR *brit*

接線方向を含む任意の文書のいずれかを含む文書を返すべき用語「ブリット」を探して、私はほとんどのエンジンに気づきました部分的用語ではなく完全な用語に基づくTF-IDF(用語頻度 - 逆文書頻度)またはその派生語を使用する。 TF-IDF以外の文書検索にも成功した技術は他にありますか? luceneので

+0

質問、lucene、Xapian、または少なくとも検索エンジンに検索エンジンタグを追加することをおすすめします。検索は一般的なタグなので、検索エンジンに参加している人は、検索エンジンに関連していない質問に対して、あらゆる種類の奇妙な要求を読んで疲れてしまうかもしれません。がんばろう! – shellter

+0

提案シェルターに感謝します。タグを追加しました。 – GeneralBecos

+1

さまざまなエンジンのドキュメントを読んでいない理由があります。 Lucene(したがってSolr)はワイルドカード検索をサポートしています:http://wiki.apache.org/lucene-java/LuceneFAQ#What_wildcard_search_support_is_available_from_Lucene – ewh

答えて

11

あなたはいくつかの方法でこれを実装することができるだろう:

1)あなたは、ワイルドカードを使用することができますが、照会*brit*(あなたは)ワイルドカードをリードする

2を許可するクエリパーサーを設定する必要があります)N-Grams of all the termsを含む追加フィールドを作成することができます。これにより、索引が大きくなりますが、多くの場合、索引が高速になります(検索速度)。

3.)ファジー検索を使用すると、クエリの入力ミスを処理できます。例えば誰かがbritneiと入力しましたが、britneyが見つかりました。

ワイルドカードクエリとファジー検索については、query syntax docsをご覧ください。

+0

クエリの最初に "*"を使用できますか? – SomethingSomething

+2

これらの種類のクエリを許可するには、クエリパーサーに指示する必要があります。これを行うには、関数setAllowLeadingWildcardを使用します。 https://lucene.apache.org/core/4_0_0/queryparser/org/apache/lucene/queryparser/classic/QueryParserBase.html#setAllowLeadingWildcard(boolean) – csupnig

関連する問題