максимальное число символов в Solr / Lucene для нечеткого совпадения - PullRequest
3 голосов
/ 20 сентября 2011

Я пытаюсь поэкспериментировать с нечетким совпадением с Solr.

В моем документе, проиндексированном поле first_name, я упомянул как «MYNEWORGANIZATION20SEP2011» - на самом деле это было слово «Моя новая организация 20 сентября 2011 года», но я удалил пробелы и другие символы.

Теперь над словом (без пробелов), если я выполняю поиск непосредственно как запрос "MYNEWORGANIZATION20SEP2011", Solr приводит к 1 результату, как указанному выше идентификатору документа, идеально!

Но если я урежу два символа из этой строки и в запросе, если я укажу "MYNEWORGANIZATION20SEP20 ~ 0.8", я получу 0 результатов.

для моего нового запроса MYNEWORGANIZATION20SEP20 расстояние с основными данными документа равно 2 - таким образом, совпадение% должно быть> 90% совпадения, поэтому оно все равно должно искать данные (в моем запросе я указываю совпадение только на 80%.

Кстати, если я использую first_name в качестве 6-7 символов, например, "rushik", и предоставляю нечеткий запрос, например, "rushik ~ 0.75", поиск работает правильно и возвращает данные.

В обоих вышеупомянутых случаях я использую тип поля как "text_general" - используя solr 3.3.

Есть ли у нас ограничение символов для нечеткого поиска в Solr, или его можно конфигурировать где угодно? - Я использую конфигурацию Solr по умолчанию, ничего не изменилось в solrconfig.xml

Есть ли лучший способ поиска строки «Моя новая организация 20 сентября 2011 года» в виде нечеткого запроса без удаления пробелов вручную.

Спасибо, Rushik.

1 Ответ

2 голосов
/ 22 сентября 2011

Что такое анализ времени индекса на вашем поле?
Общее текстовое поле обычно проходит через токенайзер пробелов, фильтр стоп-слов, разделитель слов и фильтр нижних регистров, в этом случае индексированное вами поле полностью отличается.
Выполнено ли преобразование из моей новой организации 20-Sep-2011 -> MYNEWORGANIZATION20SEP2011 до индексации?
Кроме того, наиболее важные нечеткие поиски не подвергаются анализу времени запроса.

Возможно, вы захотите использовать тип поля в виде строкового или строчного регистра, например,

    <fieldType name="lowercase" class="solr.TextField" positionIncrementGap="100">
      <analyzer>
        <tokenizer class="solr.KeywordTokenizerFactory"/>
        <filter class="solr.LowerCaseFilterFactory" />
      </analyzer>
    </fieldType>

и проверка запроса с использованием строчных букв.

...