我们正在使用Solr搜索各种长度的文章.我们索引描述性元数据(标题,作者,类别,关键字等)和完整的文章文本.我们不会在索引时提高相关性 - 所有提升都是在查询时完成的(我们使用dismax,加上各种qf,pf和bf提升).
目前我们的全文字段使用标准omitNorms = false; 因此,所有其他相同,较短的文章(2-3列英寸文章)通常具有比较长的特征长度(多页)文章更高的相关性.
在我们的案例中,文章长度是相关性的重要指标,因此我正在考虑在我们的全文字段中设置omitNorms = true.
问题:1.为什么默认的lucene/solr行为可以提高较短的字段长度?是什么原因?2.为什么我不想省略游戏?我不需要在此特定字段上提升查询,也不需要在此字段上使用任何类型的分面.
我正在研究Solr 4+.
我有几个字段进入我的solr模式,具有不同的solr字段类型.
对文本字段和字符串字段的搜索是否有所不同?
因为我试图搜索字符串字段(这是几个facet字段的复制字段),它不能按预期工作.目标字符串字段被索引并存储.
但是,当我更改文本字段(仅索引)的目标字段时,它工作正常.
你能说出为什么会这样吗?solr中的文本和字符串字段在搜索方面的区别是什么?
我是Solr的新手.我想知道何时使用StandardTokenizerFactory和KeywordTokenizerFactory?
我阅读了Apache Wiki上的文档,但我没有得到它.
任何人都可以解释StandardTokenizerFactory和KeywordTokenizerFactory之间的区别吗?
索尔新手在这里.
我创建了一个Solr索引并将一大堆文档写入其中.我可以从Solr管理页面看到文档存在且架构也很好.但是当我使用测试关键字执行搜索时,我没有得到任何结果.
进入*:*
进入查询(在Solr管理页面中)我得到了所有结果.
但是,当我输入任何其他查询(例如术语或短语)时,我没有得到任何结果.我已经验证正在查询的字段是索引并包含我要搜索的值.
所以我很困惑我做错了什么.
我目前正处于一个相当大的基于问题/答案的应用程序中(有点像stackoverflow/answerbag.com)我们使用SQL(Azure)和nHibernate进行数据访问,使用MVC进行UI应用程序.
到目前为止,架构大致沿着stackoverflow db的方向,因为我们有一个Post表(包含两个问题/答案)
可能会使用以下存储库接口的内容:
public interface IPostRepository
{
void PutPost(Post post);
void PutPosts(IEnumerable<Post> posts);
void ChangePostStatus(string postID, PostStatus status);
void DeleteArtefact(string postId, string artefactKey);
void AddArtefact(string postId, string artefactKey);
void AddTag(string postId, string tagValue);
void RemoveTag(string postId, string tagValue);
void MarkPostAsAccepted(string id);
void UnmarkPostAsAccepted(string id);
IQueryable<Post> FindAll();
IQueryable<Post> FindPostsByStatus(PostStatus postStatus);
IQueryable<Post> FindPostsByPostType(PostType postType);
IQueryable<Post> FindPostsByStatusAndPostType(PostStatus postStatus, PostType postType);
IQueryable<Post> FindPostsByNumberOfReplies(int numberOfReplies);
IQueryable<Post> FindPostsByTag(string tag);
}
Run Code Online (Sandbox Code Playgroud)
我的问题是:在哪里/如何使用solr来更好地查询这些"帖子"(我将使用solrnet与Solr进行实际通信)
理想情况下,我将SQL db用作持久存储 - 上述IQueryable操作的大部分将转移到某种SolrFinder类(或类似的东西)
Body属性是导致当前问题的属性 - 它相当大,并且减慢了对sql的查询.
我的主要问题是,例如,如果有人"更新"帖子 - 例如,添加新标签,则整个帖子将需要重新编制索引.显然,这样做需要这样的查询:
"SELECT*FROM POST …
嘿,我想知道如何开始使用Solr.NET甚至基础知识下载哪些文件等等,我检查了网络,但它像每个网站都说不同的东西有些年纪较大,所以只是不确定.
干杯
我在Solr 面临Dataimport问题.如果我称这个链接
HTTP://本地主机:8983/Solr的/ dataimport命令=全进口及洁净= FALSE
显示错误
HTTP错误404
访问/ solr/dataimport时出现问题.原因:
NOT_FOUND
Run Code Online (Sandbox Code Playgroud)
通过此链接,我按照Solr建议执行相同操作
http://wiki.apache.org/solr/DataImportHandler
我的配置如下: -
1.在solrconfig.xml中
< requestHandler name="/dataimport" class="org.apache.solr.handler.dataimport.DataImportHandler">
< lst name="defaults">
<str name="config">data-config.xml< /str>
< /lst>
< /requestHandler>
Run Code Online (Sandbox Code Playgroud)
2.在data-config.xml中(在solrconfig.xml的同一文件夹中)
< dataConfig>
< dataSource type="JdbcDataSource"
driver="com.microsoft.sqlserver.jdbc.SQLServerDriver"
url="jdbc:127.0.0.1;databaseName=testsolr"
user="testsolr"
password="12345678"/>
< document name="Product">
< entity name="Item_ID" query="select Item_ID from item">
< /entity>
< /document>
< /dataConfig>
Run Code Online (Sandbox Code Playgroud)
3.在Lib文件夹中(下载了Microsoft JDBC SQL Connector)
我在Lib文件夹中放了"sqljdbc4.jar"文件
之后,我开始solr但仍然得到相同的错误.
任何帮助将不胜感激.
非常感谢.
如何在数组字段中搜索?
我使用solr 4.2和默认设置.我使用SolrNet索引了一些html和pdf文档.以下是使用admin搜索进行搜索时此类文档的示例结果*:*
enter code here
<doc>
<str name="id">2</str>
<date name="last_modified">2011-12-19T17:33:25Z</date>
<str name="author">name</str>
<str name="author_s">name</str>
<arr name="title">
<str>CALIFORNIA CODES</str>
</arr>
<arr name="content_type">
<str>application/pdf</str>
</arr>
<str name="resourcename">T01041.pdf</str>
<arr name="content">
<str> PDF text here </str>
</arr>
<long name="_version_">1431314431195742208</long>
</doc>
Run Code Online (Sandbox Code Playgroud)
使用content:*返回0结果进行搜索.
我有一个Solr索引,可以在每个产品的多值字段中存储Price.
我需要按价格对结果集进行排序,其中价格从低到高,从高到低.
我尝试使用Price它显示错误排序您无法对多值=真实字段进行排序.
下面是我的solr XML
<arr name="sellprice">
<float>195.0</float>
<float>136.5</float>
<float>10.0</float>
</arr>
Run Code Online (Sandbox Code Playgroud)
在schema.xml中
<field name="sellprice" type="float" indexed="true" stored="true" multiValued="true"/>
Run Code Online (Sandbox Code Playgroud)
在C#代码中
ISolrQueryResults<ProductTest2> powerArticles = solr.Query(new
SolrQuery("WebCategory_Id:10") && new SolrQueryInList("FilterID",
146), new QueryOptions { FilterQueries = new[] { new
SolrQueryByRange<decimal>("sellprice", 10, 40) }, OrderBy = new[] {
new SolrNet.SortOrder(sellprice, desc) } });
Run Code Online (Sandbox Code Playgroud)
有人可以用一些好的例子解释一下吗?
solrnet ×10
solr ×9
lucene ×5
lucene.net ×2
asp.net ×1
asp.net-mvc ×1
java ×1
nhibernate ×1
search ×1
solr4 ×1
tokenize ×1