2016-09-16 8 views
0

フレーズクエストをPythonで使用する方法はありますか? これまでパーサを使っていましたが、フレーズクエストの使い方を知りたいと思います。フレーズクエリーを使って研究する

parser = QueryParser(Version.LUCENE_CURRENT, "contents", 
         analyzer) 
parser.setDefaultOperator(QueryParser.Operator.AND) 
query = parser.parse(command) 
    scoreDocs = searcher.search(query, 10000).scoreDocs 

答えて

0

まず、QueryParserを切り捨てるとアナライザーが失われることを理解しておく必要があります。 PhraseQueryは、QueryParserのように分析されません。そのため、インデックス時間分析に一致するようにフレーズをトークン化して正規化することになります。あなたはパーサをつけたほうがよいでしょう。

query = PhraseQuery() 
query.add(Term("contents", "lorem")) 
query.add(Term("contents", "ipsum")) 
query.add(Term("contents", "sit")) 
query.add(Term("contents", "amet")) 

あなたはsetSlopを使用してクエリのためのスロープを設定することができます。PhraseQueryを構築する、と述べた

は、手動で次のようになります。

各用語の位置を指定することもできます。たとえば、「座る」が私の索引のストップワードであれば、私は次のようなことをします:

query = PhraseQuery() 
query.add(Term("contents", "lorem"), 0) 
query.add(Term("contents", "ipsum"), 1) 
query.add(Term("contents", "amet"), 3) 
+0

もし私が4グラムを検索する必要があれば、毎回これを行う必要がありますか?すみません、私は初心者です。 – oezlem

+0

ngramsは、通常、同じ位置に複数のトークンを重ねることによって動作します。私の2番目のコードサンプルのように、各位置で1グラムを検索するか、または同じ位置で複数を検索することができます。 – femtoRgon

関連する問題