2017-05-02 73 views
1

我使用的是Lucene 6.0.0,並猜測我的問題可以通過FuzzuQuery來解決,假設在Lucene中支持editDistance > 2Lucene搜索最長公共子字符串

我正在使用普通的Java Lucene API(不是SOLR或ElasticSearch)。

可以說,非 - 申請記號化索引的文本 - This is Ram's House,當我與Ramram搜索,我應該得到This is Ram's House的比賽,因爲三個連字符在某種意義上相匹配,以便 - 這是與更多種類的模糊匹配要求比兩個編輯距離。

My name is Ram and my brother's name is Shyam搜索也應該給我This is Ram's House作爲匹配。

最長公共子字符串可以有最小字符數限制,目前我們應該罰款三個作爲限制。

根據我們的分析,有一個業務問題可以通過這種方式解決。

Lucene可能嗎?

可以使用任何其他工具 - 如SOLR,ElasticSearch等?

+0

您的兩個例子應該只是典型的精細分析,在不使用的所有FuzzyQueries。你遇到了什麼問題? – femtoRgon

+0

你是什麼意思?我正在使用'StandardAnalyzer',而不是在索引時標記文本字段。我沒有與'FuzzyQuery','WildCardQuery','TermQuery'或'PhraseQuery'匹配,所以我不確定在索引方面需要更改什麼以及在搜索方使用哪種查詢。 –

+0

當然不是,它沒有標記。所以...爲什麼你不把這個領域標記出來? – femtoRgon

回答

0

我能夠通過在Lucene中使用的N-gram索引技術,通過使用來解決這個問題 - NGramTokenizer

我選擇minGram & maxGram值按我的要求,我有子字符串準備爲索引,我可以查詢這些條款的索引。

它大大增加了生成和索引條款的數量,但解決了我的問題。

More Explanation here