0

I have got indexes created on tables having data of the form: indexname='text'---->Today is a great day for running in the park. Now i want to perform a search on the indexes where only 'day' or 'run' is appearing in the text.

I have implemented query like : q = 'text:(day or run*)' But this query is not returning me any results from indexes.Is this correct way?or how can i improve my query by applying regex ?

4

2 回答 2

1

您的用例非常基本,并且根本不需要 Solr 的正则表达式。看起来您可能只是有语法问题。q=text:day OR text:run 应该完全符合您的要求。

于 2012-05-03T07:15:11.317 回答
0

正则表达式和通配符在搜索引擎中速度很慢。通过以语言敏感的方式预处理术语,您将获得更好的性能。

您可以使用词干分析器将“run”与“running”匹配,这是一个分析步骤,可将单词的不同形式简化为共同词干。当查询和索引词都被提取时,它们将匹配。

您还应该查看扩展 Dismax (edismax) 搜索处理程序。这将完成一些将“day run”转变为搜索单个单词和短语的工作,例如“day OR run OR “day run””。然后,它可以进一步针对具有不同权重的多个字段进行扩展,所有这些都是自动的。

于 2012-05-03T15:35:08.230 回答