#php #solr #wildcard
#php #solr #подстановочный знак
Вопрос:
У меня проблема с синтаксисом SOLR моего запроса. На странице администратора я попытался использовать этот запрос
description:*home*
и результатом являются все документы, содержащие слово «home» в поле описания.
но, когда я пытаюсь сделать что-то подобное для поля price (которое имеет тип данных float), для него нет результата.
Кто-нибудь может сказать мне, как использовать синтаксис подстановочных знаков в SOLR для числовых типов данных (таких как integer, float, real и т.д.)?
Спасибо_
Ответ №1:
Я не уверен, почему вы хотите выполнять поиск по шаблону для чисел. Но если вам нужно, возможно, вы могли бы сохранить числа в текстовом поле и выполнять свои запросы с подстановочными знаками против этого.
Вероятно, то, что вы на самом деле хотите сделать, это запрос диапазона для ваших числовых полей. Что-то вроде:
price:[17 TO *] ' 17 or higher
price:[17 TO 18] ' between 17 and 18 (inclusive)
Смотрите SolrQuerySyntax
Если это не поможет, возможно, сообщите нам, чего вы пытаетесь достичь.
Комментарии:
1. Сейчас я создаю функцию поиска. Если я ввожу что-либо в текстовое поле (например, 45000), то я использую SOLR для получения всех полей, содержащих входные данные, независимо от типа данных string или number. Я хотел бы, чтобы вы могли мне помочь, спасибо.
2. Я не уверен, что вы здесь имеете в виду. Пожалуйста, четко объясните, чего вы пытаетесь достичь и что вы пробовали, и я постараюсь помочь
3. У меня есть текстовое поле, которое будет использоваться пользователем для ввода ключевых слов и кнопки поиска для выполнения действия поиска. В моих документах, например, у меня есть 3 поля: price (float), name (строка) и description (строка). Когда пользователь вводит ключевые слова, а затем нажимает кнопку поиска, чтобы выполнить действие, он выполнит поиск по всем полям документов, которые содержат эти ключевые слова. Итак, я использую подстановочный знак для этого. Это работает для строкового типа данных, но не для типа данных с плавающей точкой. В моем поисковом действии я использую цикл для поиска по каждому полю в каждом документе. Я надеюсь, вы понимаете, что я имею в виду,.
4. Зачем вам нужно использовать подстановочные знаки? Обратите внимание, что если вы используете анализатор запросов dismax, поиск description:*home * будет точно таким же, как description:home Это связано с тем, что символы * удалены, dismax не поддерживает подстановочные знаки. Посмотрите в вашем solrconfig.xml файл для <str name=»defType»>dismax</str>.