2013-11-29 5 views
1

У меня есть схема, как показано нижеПоиск Solr: Матч точный результат Ко S *

<fieldType name="text" class="solr.TextField" positionIncrementGap="100"> 
    <analyzer type="index"> 
     <tokenizer class="solr.KeywordTokenizerFactory"/> 
     <filter class="solr.LowerCaseFilterFactory"/> 
    </analyzer> 
<analyzer type="query"> 
    <tokenizer class="solr.KeywordTokenizerFactory"/> 
    <filter class="solr.LowerCaseFilterFactory"/> 
    </analyzer> 
</fieldType> 

И мой документ будет:

  1. Koh Samui
  2. Koh Chang
  3. Ко Ланта

Когда я делаю поиск Кох * Он возвращает 3 результата. он принял. Но когда я ищу koh S *. он возвращает нулевой результат. Я хочу, чтобы результат был только Koh Samui

+0

Похоже, [дубликат] [1]. Вам нужно избегать пробелов. [1]: http://stackoverflow.com/questions/10023133/solr-wildcard-query-with-whitespace –

ответ

0

Предполагаю, что вы хотите использовать подстановочный знак. Это зависит от используемого вами параметра запроса. Если вы используете стандартный запрос-парсер, Dismax или eDismax, все они не поддерживают запросы с помощью wild card.

И если честно, если вы используете Solr для поиска подстановочных запросов, вы можете использовать неправильный инструмент в качестве решения, вы можете использовать любую базу данных SQL и использовать текст, такой как «Koh S%» в предложении where, и это даст вам то, что вы хотите.

Но так или иначе, чтобы использовать Wild Card Query в Solr, вам необходимо напрямую использовать парсер запросов Lucene. Для этого, используйте следующий запрос:

http://localhost:8983/solr/core/select?q={!lucene df=text}Koh S*