Соль Нграм Матч Горе - PullRequest
       12

Соль Нграм Матч Горе

3 голосов
/ 17 января 2012

Это моя (довольно стандартная) схема ngram -

<fieldType name="ngram" class="solr.TextField" positionIncrementGap="100" stored="false" multiValued="true">
  <analyzer type="index">
    <tokenizer class="solr.StandardTokenizerFactory"/>
    <filter class="solr.LowerCaseFilterFactory"/>
    <filter class="solr.NGramFilterFactory" minGramSize="1" maxGramSize="15"/>
  </analyzer>
  <analyzer type="query">
    <tokenizer class="solr.StandardTokenizerFactory"/>
    <filter class="solr.LowerCaseFilterFactory"/>
  </analyzer>
</fieldType>

теперь laptop_ngram: "g74sx-a" возвращает -

<arr name="laptop_ngram">
  <str>ASUS G74SX-A1 17.3-Inch Gaming Laptop</str>
</arr>

но laptop_ngram: "g74sx-a1" ничего не находит.

Кстати, экранирование "-" не имеет никакого значения.

Есть мысли?

Ответы [ 2 ]

1 голос
/ 17 января 2012

Спасибо О. Кляйну, который показал мне новое направление.

Я наконец согласен с WhitespaceTokenizerFactory плюс WordDelimiterFilterFactory -

<fieldType name="ngram" class="solr.TextField" positionIncrementGap="100" stored="false" multiValued="true">
  <analyzer type="index">
    <tokenizer class="solr.WhitespaceTokenizerFactory"/>
    <filter class="solr.WordDelimiterFilterFactory" generateWordParts="1" generateNumberParts="1" catenateWords="1" catenateNumbers="1" catenateAll="1" preserveOriginal="1"/>
    <filter class="solr.LowerCaseFilterFactory"/>
    <filter class="solr.NGramFilterFactory" minGramSize="1" maxGramSize="15"/>
  </analyzer>
  <analyzer type="query">
    <tokenizer class="solr.WhitespaceTokenizerFactory"/>
    <filter class="solr.LowerCaseFilterFactory"/>
  </analyzer>
</fieldType>

, который работает для "g74sx", "g74sx-", "g74sx-a" и "g74sx-a1"

Однако, путешествие здесь не закончилось, так как я все еще исследую, почему -

"G74SX-XA1"найдено с "g74sx-x" и "g74sx-xa1", но не с "g74sx-xa" ...

1 голос
/ 17 января 2012

StandardTokenizerFactory может что-то сделать с термином.Вы можете проверить это на странице анализа.

Таким образом, переход на WhitespaceTokenizerFactory может решить проблему.

...