Apache Luceneを使用して、フレーズ「Grand Prarie」(意図的にスペルミス)であいまい一致を実行しようとしています。私の問題の一部は、~
オペレーターが単一の単語の用語に対してのみあいまい一致を行い、フレーズの近接一致として動作することです。
Luceneを使用したフレーズであいまい一致を行う方法はありますか?
Apache Luceneを使用して、フレーズ「Grand Prarie」(意図的にスペルミス)であいまい一致を実行しようとしています。私の問題の一部は、~
オペレーターが単一の単語の用語に対してのみあいまい一致を行い、フレーズの近接一致として動作することです。
Luceneを使用したフレーズであいまい一致を行う方法はありますか?
Lucene 3.0には、ファジーフレーズクエリをサポートするComplexPhraseQueryParserがあります。これはcontribパッケージに含まれています。
グーグルを通してこれに出くわし、私が求めていたものではないところに解決策を感じました。私の場合、解決策はsolrAPIに対して検索シーケンスを繰り返すことでした。たとえば、「dog〜」と「cat〜」の一致を含めるtitle_tを探している場合は、次のようにクエリを生成するための手動コードを追加しました。
((title_t:dog~) and (title_t:cat~))
上記のクエリの内容かもしれませんが、リンクが機能していないようです。
ファジーフレーズを直接サポートすることはできませんが、ファジー用語を明示的に列挙し、それらをMultiPhraseQueryに追加することで、それをシミュレートできます。結果のクエリは次のようになります。
<MultiPhraseQuery: "grand (prarie prairie)">