2016-03-31 4 views
1

目的:辞書(Gutenbergプロジェクトから取ったサンプル辞書)を構築する。このアプリケーションは、 "単語"を返す機能を持っている必要があります。例:Luceneを使用して文中の語句を検索する。5.5

CONSOLE コン*ソール」、VT [IMP &頁慰めた。p.pr. &慰めvb.n.。。] Etym:[L. consolari ,.頁consolatus;コン+ソラーリへコンソール、快適性:cf.コンサルタントを参照してください。

Defn:苦痛やうつ状態で応援してください、悲しみを和らげ、精神を高める、癒し、慰め、落ち着かせる、教皇。私は、キリストの宗教がすべての知恵と哲学者によって無駄に攻撃され、その勝利は完結しているという反省から大きく慰められている。Syn。 - 快適にする。慰め;落ち着く;応援;サスティーン;奨励します;サポート。快適さを参照してください。

私のクエリが「苦痛の中で応援する」場合、出力として「コンソール」が返されます。

Lucene 5.5を使用してこのツールを構築しようとしています(下のバージョンは今のところできません)。これは私が試したものです:

インデックス:

Document doc = new Document();<br> 
doc.add(new Field(MEANING, meaningOfWord, Store.YES, Field.Index.ANALYZED));<br> 
doc.add(new Field(WORD, word, Store.YES, Field.Index.ANALYZED));<br> 
indexWriter.addDocument(doc);<br> 

分析:

Analyzer analyzer = new WhitespaceAnalyzer();<br> 
QueryParser parser = new QueryParser(MEANING, analyzer);<br> 
parser.setAllowLeadingWildcard(true);<br> 
parser.setAutoGeneratePhraseQueries(true);<br> 
Query query = parser.parse(".*" + searchString + ".*");<br> 
TopDocs tophits = isearcher.search(query, null, 1000);<br> 


これ(tophitsは)私が欲しいものを私に返していません。 (私は先週からLuceneを試していましたので、これが非常に素朴ならば容赦してください)。すべての手がかりは?解決策を見つけた

+0

解決策が見つかりました。次のようにWildCardQueryを使用します。WildcardQuery wildCardQ = new WildcardQuery(new Term(MEANING、searchString)); – user1300830

答えて

-1

、このように、WildCardQueryを使用する:

WildcardQuery wildCardQ =新しいWildcardQuery(新しい用語(意味、searchStringの))。

しかし、誤った単語やフレーズの場合は、回答に戻るまでに時間がかかることがあります。

+0

リーディングワイルドカードを許可するフラグを設定する必要がある理由があります。先頭のワイルドカードはクエリを非常に遅くします。 – femtoRgon

+0

解決策を提案できますか?いいえ?私は当分これと一緒に行きます。 – user1300830

+0

うん、はい。私がすでに投稿した答えを見てください... – femtoRgon

0

文書が索引付けされたときに、別のアナライザーのようなサウンドが使用されました。おそらくKeywordAnalyzerまたは何か。検索時に使用するドキュメントにインデックスを付けるときは、IndexWriterに同じアナライザを渡す必要があります(通常は)。また、IndexWriterのアナライザーを修正した後で、文書を正しく索引付けするためには、文書を再索引付けする必要があります。

ワイルドカードでの簡単なフレーズクエリは、と非常によく似ています。正しく解析するには、が貧弱です。

関連する問題