2017-05-02 1 views
1

Lucene 6.0.0을 사용 중이며 FuzzuQuery으로 해결할 수 있다고 가정하면 editDistance > 2은 Lucene에서 지원되었을 것입니다.가장 긴 공통 하위 문자열에 대한 Lucene 검색

일반 Java Lucene API (SOLR 또는 ElasticSearch 없음)를 사용하고 있습니다. 이 더와 종류의 퍼지 일치 요구 사항입니다 - This is Ram's House 내가 Ram 또는 ram으로 검색 할 때, 나는 세 개의 연속 문자는 의미에서 그렇게 일치하기 때문에 일치로 This is Ram's House을 얻어야한다 - 제출 토큰 화 된 인덱스 텍스트입니다 -

비 말할 수 있습니다 두 편집 거리보다.

My name is Ram and my brother's name is Shyam으로 검색하면 This is Ram's House이 (가) 검색됩니다.

가장 긴 공통 하위 문자열에 최소 문자 수에 제한이있을 수 있으며 현재는 3 개로 제한해야합니다.

Google 분석에 따르면 이러한 방식으로 해결할 수있는 비즈니스 문제가 있습니다.

Lucene과 함께 할 수 있습니까?

SOLR, ElasticSearch 등의 다른 도구로 작업 할 수 있습니까? 내가 사용하여 루씬에서 N-그램 색인 기법을 사용하여이 문제를 해결할 수 있어요

+0

당신의 예는 모두 전혀 FuzzyQueries를 사용하지 않고 일반적인 분석과 잘 작동합니다. 어떤 문제가 있습니까? – femtoRgon

+0

무엇을 의미합니까? 'StandardAnalyzer'를 사용 중이며 인덱싱 중에 텍스트 필드를 토큰 화하지 않습니다. 'FuzzyQuery','WildCardQuery','TermQuery' 또는'PhraseQuery'와는 아무런 일치도 얻지 못하기 때문에 색인 생성 측에서 변경해야 할 것이고 검색 자 측에서 어떤 질의를 사용할 지 확신 할 수 없습니다. –

+0

물론, 토큰 화되지 않았습니다. 그래서 .. 왜 그 분야를 토큰 화하지 않는거야? – femtoRgon

답변

0

-NGramTokenizer

은 내 요구 사항에 따라 minGram & maxGram 값을 선택하고 색인으로 나는 서브 문자열을 준비하고 내가 조회 할 수 있습니다 해당 용어에 대한 색인.

생성 및 색인 된 용어의 수를 크게 늘리지 만 내 문제를 해결합니다.

More Explanation here

관련 문제