Точная фраза соответствует n-грамме, но результатов не найдено? - PullRequest
3 голосов
/ 24 февраля 2012

У меня есть тип поля, в котором используется токенайзер ключевых слов (весь термин - токен), с фильтрами строчных букв и n-грамм, например, «Роберт Лонго» хранится как «r», «ro»,..., "robert l", "robert lo" и т. д. На странице администратора анализа все это работает, как и ожидалось.

Но когда я ищу "robert long" (с кавычками), яне получите результатов, даже если это точное соответствие токена.Когда я ищу без кавычек, мои термины предварительно разбиты на токены, и они соответствуют всем "Роберт" и всем "я", а не только "Роберт".Нужно ли как-то указывать подстановочный знак, чтобы сказать, что в термине есть что-то еще?

Из схемы:

<fieldType name="edge_text" class="solr.TextField" positionIncrementGap="100">
    <analyzer type="index">
        <tokenizer class="solr.KeywordTokenizerFactory"/>
        <filter class="solr.LowerCaseFilterFactory"/>
        <filter class="solr.EdgeNGramFilterFactory" minGramSize="1" maxGramSize="25" />
    </analyzer>
    <analyzer type="query">
        <tokenizer class="solr.KeywordTokenizerFactory"/>
        <filter class="solr.LowerCaseFilterFactory"/>
    </analyzer>
</fieldType>

Моя цель - получить что-то, что возвращает совпадения фраз из нашего сохраненногоТермины, которые начинаются именно с того, что было дано, поэтому точное совпадение и порядок терминов имеют решающее значение.

Есть идеи?

1 Ответ

1 голос
/ 27 февраля 2012

Это должно работать нормально, и я мог бы получить результат.
Можете ли вы проверить с конкретными для поля?если имя поля является edge_text и оно проиндексировано, вы можете попробовать q=edge_text:"robert long"

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...