проблема натурного поля - PullRequest
0 голосов
/ 18 июня 2009

Я использовал что-то вроде:

Field notdirectory = new Field("notdirectory","1", Field.Store.NO, Field.Index.UN_TOKENIZED);

и запросы типа "notdirectory: 1" могут быть обработаны довольно хорошо все время.

Но недавно я изменил «Field.Store.NO, Field.Index.UN_TOKENIZED», чтобы индексировать нечисловую строку:

Field stateField = new Field("state","irn_" + state, Field.Store.NO, Field.Index.UN_TOKENIZED);

и запросы типа "state: irn_CA" больше никогда не смогут получить никаких результатов, даже несмотря на то, что я просматриваю журналы hadoop, которые фактически добавляют irn_CA в поле "state".

Поэтому я сомневаюсь, что для полей, которые удовлетворяют «Field.Store.NO, Field.Index.UN_TOKENIZED», поиск возможен только по числовым полям, но я не видел никаких документов по этому поводу.

Так в чем истинная причина этого?

Ответы [ 2 ]

2 голосов
/ 18 июня 2009

Я думаю, вы используете StandardAnalyzer для анализа входного запроса, который разбит ваш входной запрос "irn_CA" на два токена - "irn" и "CA". Поскольку индекс имеет в качестве одиночного токена «irn_CA», он не будет совпадать.

Попробуйте использовать KeywordAnalyzer для поиска. Он сгенерирует один токен для строки запроса и правильно сопоставит индексированный токен.

0 голосов
/ 04 мая 2011

Я думаю, что поисковый компонент заставляет все в нижнем регистре ... поэтому при добавлении в индекс состояние должно быть в нижнем регистре:

Field stateField = new Field("state","irn_" + state.toLowerCase(), Field.Store.NO, Field.Index.UN_TOKENIZED);

и при запросе: «состояние: irn_ca» вместо «состояние: irn_CA».

Также отмечу, что перед вами префикс 'irn_' - хороший вызов, в противном случае подсветка помечает запрос.

...