Lucene.net을 사용하고 있으며 제품 데이터베이스의 항목 이름을 다르게하거나 철자를 다르게 지정할 수있는 경우 확장 조건을 제공하기 위해 SynonymFilter를 구현하려고합니다. "spanner"> "wrench"또는 "lawnmower"> "lawn mower"를 선택하십시오. SynonymMap 다음과 같이 테스트 I 설정으로Lucene.Net 여러 단어로 된 SynonymFilter
:
String base1 = "lawnmower";
String syn1 = "lawn mower";
String base2 = "spanner";
String syn2 = "wrench";
SynonymMap.Builder sb = new SynonymMap.Builder(true);
sb.Add(new CharsRef(base1), new CharsRef(syn1), true);
sb.Add(new CharsRef(base2), new CharsRef(syn2), true);
SynonymMap smap = sb.Build();
"스패너"또는 "렌치"검색은에 두 단어로 다시 모든 조건을 제공합니다 검색을 "잔디 깎는 기계"또는 "잔디 깎는 기계"에 대해서만. 입력 검색 기준과 정확하게 일치하는 용어를 반환합니다.
동의어 내에서 여러 단어 구문을 처리해야하는 다른 것이 있습니까?
또한 어떻게 "lawnmower", "lawn mower", "mower", "grass cutter"와 같은 용어를 3 개 이상 확장 할 수 있습니까?
감사
감사합니다. 3 개 이상의 용어를 모두 모두 매핑하려면 "lawnmower", "lawn mower", "mower", "grass cutter"와 같이 3 개 이상의 용어로 어떻게 확장합니까? 각 대안 페이지를 서로 매핑해야합니까? – chilluk
잘 모르겠지만 작동하는 유일한 방법은 합당한 것 같습니다. 모든 동의어를 목록에 추가 한 다음 [이 조합 확장 방법] (https://stackoverflow.com/a/32479803/)을 사용하여 모든 매핑을 추가하면 모든 조합을 더 간단하게 추가 할 수 있습니다. – NightOwl888
그래서 a> b, b> a, a> c, c> a, b> c 및 c> b를 추가해야합니까? 내장 인덱스와 들어오는 쿼리 모두에서이 작업을 수행하려고합니까? 내 소스 데이터에서 나는 다른 용어의 변형을 가질 수 있으며 분명히 사람들이 그것을 검색 할 방법을 예측할 수는 없다. 또는 모든 대체 용어를 찾기 위해 쿼리를 처리하는 것만으로도 충분합니까? 동의어를 추가 할 때 원래 값을 유지합니까? 나는 최선의 접근 방식을 찾을 수 있도록 후드에서 무슨 일이 일어나고 있는지 알기 위해 무엇이 만들어지고 있는지 "볼 수 없다". – chilluk