1. Схема
Ваша схема Solr в значительной степени определяется по вашему намерению поиска. В файле schema.xml вы увидите множество вариантов, таких как «текст» и «строка». Они ведут себя по-другому.
<fieldtype name="string" class="solr.StrField" sortMissingLast="true" omitNorms="true"/>
Тип строкового поля - это буквальное совпадение строк. Он будет работать как ==
в инструкции SQL.
<fieldtype name="text_ws" class="solr.TextField" positionIncrementGap="100">
<analyzer>
<tokenizer class="solr.WhitespaceTokenizerFactory"/>
</analyzer>
</fieldtype>
В поле типа text_ws используется токенизация. Однако большая разница в поле text
- это фильтры для стоп-слов и разделителей и нижнего корпуса. Обратите внимание, как эти фильтры назначаются как для индекса Lucene, так и для запроса Solr. Поэтому при поиске в текстовом поле он будет адаптировать условия запроса с помощью этих фильтров, чтобы найти совпадение.
<fieldtype name="text" class="solr.TextField" positionIncrementGap="100">
<analyzer type="index">
<tokenizer class="solr.WhitespaceTokenizerFactory"/>
<filter class="solr.StopFilterFactory" ignoreCase="true" words="stopwords.txt"/>
<filter ..... />
<filter ..... />
<filter ..... />
</analyzer>
</fieldtype>
При индексировании таких вещей, как газетные, например, вы, вероятно, хотите, чтобы искать название компаний и заголовки по-разному.
<field name="headline" type="text" />
<field name="coname" type="string" indexed="true" multiValued="false" omitNorms="true" />
Приведенный выше пример позволит вам сделать поиск как &coname:Intel&headline:processor+specifications
и получить матчи ударяя именно Intel истории.
Если вы хотите найти в диапазоне
2. Результат Поля
Вы можете определить стандартный набор возвращаемых полей в вашем RequestHandler
<requestHandler name="mumble" class="solr.DisMaxRequestHandler" >
<str name="fl">
category,coname,headline
</str>
</requestHandler>
Вы также можете определить нужный полей в строке запроса, используя параметр fl
.:
/select?indent=on&version=2.2&q=coname%3AIn*&start=0&rows=10&fl=coname%2Cid&qt=standard
Вы также можете указать select ranges в своих запросах с использованием синтаксиса field:[x TO *]
.Если вы хотите выбрать определенные объявления по их дате, вы можете создать запрос с
ad_date:[20100101 TO 20100201]
в ваших запросах. (Существует много способов поиска диапазонов, я представляю метод, который использует целые числа вместо класса Date.)
Знаете ли вы, где я могу найти «справочное руководство» по всем классам и атрибутам для этих типов полей? – 2010-01-25 09:50:33
Обычно я начинаю с вики-страницы Solr http://wiki.apache.org/solr/, а классы Javadocs для классов расположены здесь: http://lucene.apache.org/solr/api/index.html. –