2017-01-02 10 views
0

У меня возникла одна проблема с использованием solr 4.9 с drupal-7 и API поиска. Когда я ищу комбинацию восклицательного знака (!), Тогда solr возвращает пустой результат.Solr возвращает пустой результат при поиске "OMG! *"

например:

http://localhost:8983/solr/collection1/select?q=OMG!*&wt=json 

выше обратный запрос пустой результат. Тем не менее, в документе есть данные с этим словом:

1. "tm_title": [ 
      "OMG! Ranveer Singh admits to having a 'Casting Couch' experience " 
     ] 
2. "tm_title": [ 
      "OMG! Rajinikanth was supposed to dub for 'Dangal'" 
     ] 

Результат должен вернуть этот документ, как я ищу начиная слово «OMG!» и за ним следует что угодно (*).

EDITED: Ниже приведена конфигурация поля заголовка API поиска. enter image description here

+0

Пожалуйста, поделитесь типом поля, используемым для поля tm_title? поиск зависит от того, как поле было проиндексировано? –

+0

Да, его тип текста. – vijay

+0

Было бы хорошо, если бы вы могли поделиться определением fieldType ..fieldType, где он определил анализатор и фильтр .... Вы найдете то же самое в schema.xml –

ответ

2

Когда вы используете подстановочные знаки, последовательность анализатора в основном пропускается. Поскольку контент, вероятно, индексируется как «omg» (вы можете это подтвердить, используя страницу анализа интерфейса администратора), пытаясь сопоставить токены, начинающиеся с «OMG!». не будет работать (он, вероятно, будет искать «omg!», так как нижестоящий фильтр является многотомным).

Если вы уроните '!' из вашего подстановочного знака, вы, вероятно, получите удар - или если вы отбросите шаблон.

+0

Да ... Я тоже искал поиск с помощью!! и подстановочный знак ... это не работает ... например, если я ищу «Браву!» ... Я получаю результат ... и если я ищу «Браву!», это не дает мне результат ... Хороший улов MatsLindh ... –

+0

Привет @MatsLindh, Когда я только ищу с "OMG!" это возвращает мне результат. – vijay

+0

Да, потому что тогда выполняется целая цепочка анализов, разделяющая '!' И выполняющая ту же обработку, что и при индексировании содержимого. Когда вы используете подстановочный знак, несколько шагов этой цепочки анализа пропускаются (за исключением фильтров, которые являются мультитермическими), поэтому маркеры не совпадают. – MatsLindh